main函数是所有C语言程序的入口,也就说所有的C语言程序都需要一个称之为main的外部函数,当程序启动时,从main开始执行,当该函数返回时,程序也将终止,并且这个函数的返回值被看成是程序成功或失败的标志,若执行到该函数体的末尾没有遇到返回语句 ,则看成是执行了return 0; 语句。
C的设计原则是把函数作为程序的构成模块。main()函数称之为主函数。
一、main()函数的形式
在最新的C99中,main函数只有两种标准形式:
int main( void ) /* 无参数形式 */
{
//函数内容
}
或
int main( int argc, char *argv[] ) /* 带参数形式 */
{
//函数内容
}
int指明了main()函数的返回类型,函数名后面的圆括号一般包含传递给函数的信息。void表示没有给函数传递参数。
常见非标准形式
void main()
{
//函数内容
}
有些编译器允许这种形式,但是还没有任何标准考虑接受它。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地表示:void main( ) 的定义从来就不存在于 C++ 或者 C 。所以,编译器不必接受这种形式,并且很多编译器也不允许这么写。坚持使用标准的意义在于:当你把程序从一个编译器移到另一个编译器时,照样能正常运行。
二、main()函数的返回值
从main函数的形式来看,main函数的返回值有两种,一种是void,表明该函数运行不可能失败;另一种是整数,对于window和linux来说,返回值为0时,都代表成功,非0值可以参考Linux或window错误代码及其含义。当然也可以定义不在参考范围的值给出特定含义。
linux错误代码及含义
windows错误代码及含义
三、main()函数的参数
C编译器允许main()函数没有参数,或者有两个参数(有些实现允许更多的参数,但这只是对标准的扩展)。第一个参数argc(argument count)记录了输入参数的个数,第二个参数argv(argument value)是字符串数组的,字符串数组的每个单元是char*类型的,指向一个c风格字符串。
#include<stdio.h>
int main(int argc, char* argv[])
{
printf("The command line arguments count:%d\n", argc);
printf("The command line arguments value list:\n");
int count;
for (count = 0; count < argc; count++)
printf("%d: %s \n", count, argv[count]);
return 0;
}
C程序列表