main函数
main
函数是C语言和C++ 程序的入口,C和C++ 的标准要求它们的实现必须支持以下两种形式:
1 | int main(void) {...} |
任何C和C++ 库实现都必须实现以上两种形式的main
,除此以外,可以根据标准进行其他扩展实现,但是这样子可能在一个平台上能运行的程序在另一个平台上不能运行,即除了标准的两种main
,其他扩展都是不可移植的。
需要注意的一点是,C和C++ 标准对于main
的扩展有要求,C++ 标准要求所有的main
都必须返回int
类型,只有它们的参数可以改变。而C要自由一些,可以有void main(char, dobule)
的实现,但是在C++ 标准中这是不支持的。int main(int ,char*, char**)
在C和C++ 标准中都是允许的。
main函数示例
假设有一个名为prog的可执行文件,其中包含一个main
函数,可以通过命令行选项向程序传递参数:
1 | prog -d -o file data0 |
这些参数通过两个形参argc
和argv
传递给main
函数。形参argv
是一个数组,数组元素是字符串指针,即argv
是一个C风格字符串指针数组。而argc
表示的是字符串数组的长度。
当一个实参传递给main
函数之后,argv
的第一个元素指向程序的名字或者一个空字符串,接下来的元素依次存放命令行提供的实参。最后一个指针指向的元素应该保证为0。
注意,当使用argv
中的实参时,注意argv[0]
保存的是程序名字或者空字符串,可选的实参从argv[1]
开始。
参考文献
1.《C++ Primer第五版》
2.https://stackoverflow.com/questions/9554513/c-main-vs-c-main
3.《你必须知道的495个C语言问题》