K&R对命令行参数说了以下几点:
常规上调用的第一个[命令行参数]
argc
(用于参数计数)是调用程序所使用的命令行参数的数量。第二个(argv
,用于参数向量)是一个指向包含参数的字符串数组的指针,每个字符串一个。
如上所示,第二个自变量被描述为指向字符串数组的指针。只是为了澄清一下,这是不是说第二个参数是指向存储有多个字符串的单个数组的指针?
语法不只是: main (int argc, char argv)
但是语法是 main (int argc, char *argv[])
参数语法看起来更像是一个指针数组,其中每个元素都指向字符串常量或另一个数组中字符串的第一个元素。
打印这些指针所指向的内容的循环结构看起来更像我刚才描述的那样:
for(i = 1; i < argc; i++)
printf("%s\n", argv[i])
参数是指针数组吗?如果是这样,这些元素实际上指向什么?如果不是,参数是什么?
在C中,“字符串”实际上是char[]
。
此外,函数签名中的数组(任何基本类型)都完全等效于指向第一个元素的指针。
每个参数都是一个字符串,即achar[]
或char*
。
字符串数组是char *[]
或char**
。
因此,K&R是正确的,签名应该是正确的。
顺便说一句,argv [0]通常是程序的文件名,除非您具有指向同一可执行文件的多个链接并且根据调用程序的名称执行不同的操作,否则它不会令人感兴趣。您也可以将其用于用户反馈,例如使用说明。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句