今天在嵌入式课程学习时发现一些c语言程序的main函数存在参数,针对这一问题我查找了一些资料,整理了一下。
main函数主要有这种形式:main(int argc, char *args[])。主要在Liunx系统中使用命令读取文件信息时用到,在DOS中也有着同样的用处。
在一些编译器允许将main() 的返回类型声明为void,这已不再是合法的C++。main(int argc, char *argv[], char **env)才是UNIX和Linux中的标准写法。
假定我们编译一个C语言程序,它的main函数带有参数,生成了最终文件a.out。我们使用命令:./a.out 参数1 参数2 ....参数n 来运行程序。
参数argc必须为整数,用来统计命令行中参数的个数,要算上./a.out。
* argv[]必须为字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数,argv数组中元素的个数即为argc的大小。
argv[0] 指向程序运行的全路径名,即为程序地址。
argv[1] 指向命令行中执行程序名后的第一个字符串。
argv[2] 指向执行程序名后的第二个字符串。
argv[n]以此类推。
argv[argc]为NULL。
argc,argv是在main( )函数之前被赋值的,编译器生成的可执行文件,main()不是真正的入口点,而是一个标准的函数,这个函数名与具体的操作系统有关。