argc是从命令行获得的命令参数数目,argv[]是从命令行获得的数组,数组元素为具体的命令字符串
如果从命令行输入:whereis /home .c
打印出来的结果为:
arg0: whereis
arg1: /home
arg2: .c
#include "stdio.h" int main(int argc, char *argv[]) { int k; for(k = 0; k < argc; k++) printf("arg%d: %s\n", k, argv[k]); }
在C语言中,将数组作为参数毫无意义,它会自动地将参数的数组声明转换为相应的指针声明,下面的两种
写法是完全相同的。
int strlen(char s[]) int strlen(char* s)
经常看到main()参数的两种形式:
main(int argc, char* argv[ ]) main(int argc, char** argv)
前一种写法强调的重点是在于argv是一个指向某数组的起始元素的指针,该数组的元素巍为字符指针类型。这两种写法是等价的。
参考资料:
1.《C陷阱与缺陷》 P42