最简单的C语言程序

声明:本人知识有限,文章可能有误或不全面,望指正并讨论!

最简单的C语言程序,应该就是一个main函数,而main里什么也不做了。如下:

C文件main.c:

int main()
{
    return 0;
}

在 unix/linux下编译,后生成可执行程序main,并执行main:

# cc -Wall -o main main.c
# ./main
#

程序无输出。

这是一个最简单的C语言程序了,但虽然是最简单,也有值得注意的地方。

为什么会是main函数?


因为main函数是链接生成可执行程序的入口,即程序的代码运行的入口。这是被定义的。而main函数的原型可以有三个:

int main();
int main(int argc, char *argv[]);
int main(int argc, char **argv);

第一个main函数忽略命令行参数;

第二个main与第三个main是等价的,他们接受命令行参数。

一个可执行程序只有一个入口,那么正常情况下main函数也只能有一个。

但也有不正常的情况,那就是把main函数声明为static,但此时编译器会发出警告。这样声明的main函数就失去了作为程序入口的特性。而此时的static main函数不能和作为程序入口的main放在同一个文件,而需要把static main放到另一个C文件,从而使static main仅在文件内访问。

main函数只能有一个,那么main函数是不是只能执行一次。答案是否定的,main函数也是可以执行多次,只要代码中显示调用main函数,那么main函数也是可以执行的。如下面程序:

#include <stdio.h>

int main(int argc, char *argv[])
{

	if (argc >0) {
		main(argc - 1, argv);
		printf("%s\n", argv[argc - 1]);
	}

	return 0;
}

为什么没有include头文件?


因为最开始的main函数中,没有使用到一些编译或链接时所不知道的标识符,所以不需要include其他头文件。

时间: 2024-11-06 18:00:20

最简单的C语言程序的相关文章

超简单的c语言程序

//打印100 ~200之间的素数#include <stdio.h>int main(){ int i,n; for(i=100;i<200;i++) {  for(n=2;n<i/2;n++)  {   if(i%n==0)    break;  }  if(i%n!=0)    printf("%d\t",i); } return 0;} //判断1000年到2000年之间的闰年#include <stdio.h>int main(){ int

每天一点GO语言——Linux环境下安装Go语言环境以及编写Go语言程序初体验

每天一点GO语言--Linux环境下安装Go语言环境以及编写Go语言程序初体验 一.安装Go语言环境 [[email protected] opt]# yum -y install wget git [[email protected] opt]# wget -c https://studygolang.com/dl/golang/go1.10.3.linux-amd64.tar.gz [[email protected] opt]# tar -zxvf go1.10.3.linux-amd64

linux下java程序与C语言程序通过SOCKET通信的简单例子

linux下java程序与C语言程序通过SOCKET通信的简单例子 今天上午实验了java程序与c语言程序通过socket进行通信.由于没学过java,因此只是编写了C语言端的代码,java端的代码是从网上别的文章中找的,经过少量修改后与C语言端程序通信成功. 本例中C语言端作为服务器,java端作为客户端 代码如下: /****************** server program *****************/ #include <stdio.h> #include <sy

用L脚本语言开发一个简单的局域网聊天程序

#scp #这是一个简单的局域网聊天程序的例子 定义:字符串,string1 定义:字符串,string2 #addr1是对方的地址 #addr2是自己的地址 #如果addr1和addr2相同,就是自己和自己聊天 定义:地址,addr1,127.0.0.1,27015 定义:地址,addr2,127.0.0.1,27015 定义:整数,字节数,0 #在自己的UDP端口上监听 定义:网络连接,conn2,UDP 监听:conn2,addr2 #连接对方的UDP端口 定义:网络连接,conn1,UD

ubuntu中编写helloworld简单c语言程序(先贴上,这个还需要改,因为自己的vi有点问题)

1.首先用vi编写一个c语言程序文件,命令行输入:vi helloworld.c,建立一个名叫"helloworld.c"的文件 2.在文件中输入内容 #include <stdio.h> int main() { printf("hello world!"); return 0; } 3.命令模式下输入:wq,保存并退出 4.输入gcc helloworld.c,编译默认shengc生成名为a.out的执行文件,可以用gcc -o 编译生成其它名字的执

C语言程序的内存布局

一:C语言程序的存储区域 C语言编写的程序经过编绎-链接后,将形成一个统一的文件,它由几个部分组成,在程序运行时又会产生几个其他部分,各个部分代表了不同的存储区域: 1.代码段(Code or Text): 代码段由程序中的机器码组成.在C语言中,程序语句进行编译后,形成机器代码.在执行程序的过程中,CPU的程序计数器指向代码段的每一条代码,并由处理器依次运行. 2.只读数据段(RO data): 只读数据段是程序使用的一些不会被更改的数据,使用这些数方式类似查表式的操作,由于这些变量不需要更改

[转]100个经典C语言程序(益智类问题)

目录: 1.绘制余弦曲线 2.绘制余弦曲线和直线 3.绘制圆 4.歌星大奖赛 5.求最大数 6.高次方数的尾数 8.借书方案知多少 9.杨辉三角形 10.数制转换 11.打鱼还是晒网 12.抓交通肇事犯 13.该存多少钱 14.怎样存钱利最大 15.捕鱼和分鱼 16.出售金鱼 1.7 分数四则运算 17.平分七筐鱼 18.有限5位数 19. 8 除不尽的数 21.4位反序数 22.求车速 23.阿姆斯特朗数 24.完全数 26.亲密数 27.自守数 28.回文数 29.求具有abcd=(ab+c

C语言程序编译过程

最近在编译DM8168的ARM端程序时经常出现未定义.重定义等报错,由于源码文件多,包含关系比较多,所以自己添加时容易乱.深深的体会到,好的代码风格是如此重要,之前也在看代码重构,以后应该更加注意代码的质量.经思考总结规律如下: 1.公用的数据结构等写为一个头文件,其他源文件包含此头文件.同时为了让不同源文件里的函数都可以使用,公用的函数可以放在此头文件中声明. 2.其他源文件里声明的变量,如果想在另一个文件里用,需要extern声明,这样可以避免各种全局变量的交互混杂. 理解的比较浅,希望高人

Python重写C语言程序100例--Part4

''' [程序24] 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和. 1.程序分析:请抓住分子与分母的变化规律. 2.程序源代码: ''' #方法一 a = 2.0 b = 1.0 s = 0 for n in range(1,21): s += a / b t = a a = a + b b = t print s #方法二 s = 0.0 for n in range(1,21): s += a / b b,a = a , a +