main
函数通常是应用程序第一个执行的函数。对基于命令行的程序来说,通过为其传递信息来打开某种行为的开关或控制某种行为很常见。可以用这些参数来指定要处理的文件或是配置应用程序的输出。比如说,Linux的ls
命令会基于接收到的参数列出当前目录下的文件。
C用传统的argc
和argv
参数支持命令行参数。第一个参数argc
,是一个指定传递的参数数量的整数。系统至少会传递一个参数,这个参数是可执行文件的名字。第二个参数argv
,通常被看做字符串指针的一维数组,每个指针引用一个命令行参数。
下面的main
函数只是简单地列出了它的参数,每行一个。在这个版本中,argv
被声明为一个char
指针的指针。
int main(int argc, char** argv) {
for(int i=0; i<argc; i++) {
printf("argv[%d] %s\n",i,argv[i]);
}
...
}
程序可以用下面的命令执行:
process.exe -f names.txt limit=12 -verbose
输出如下:
argv[0] c:/process.exe
argv[1] -f
argv[2] names.txt
argv[3] limit=12
argv[4] -verbose
使用空格将每个命令行参数分开,这个程序的内存分配如下图。
int main(int argc, char* argv[]) {
这跟char** argv
是等价的。