看起来argv[argc]
总是NULL
,所以我想我们可以在没有argc
的情况下遍历参数列表。一个while
循环就可以做到这一点。
如果argv
的末尾总是有NULL
,为什么我们还需要argc
发布于 2013-09-01 16:55:01
我们“需要”它,因为它是各种标准所要求的。
我们可以完全忽略这个值,但是因为它是main
的第一个参数,所以我们必须将它包含在参数列表中。在C++ (可能是非标准的C语言)中,您只需省略参数名称,就像下面这样的C++代码片段(易于转换为C语言):
#include <stdio.h> // C-compatible include, guarantees puts in global namespace
// program will print contents of argv, one item per line, starting from argv[0]
int main(int /*argc*/, char *argv[]) { // uncomment argc for C
//(void)argc; // uncomment statement for C
for (int i=0; argv[i]; ++i) {
puts(argv[i]);
}
return 0;
}
在标准C中,使用常见的警告设置,未使用的参数生成警告,可以通过(void)argc;
之类的语句修复该警告,该语句会导致使用该名称,而不会生成任何代码。
拥有argc
是很好的,因为否则许多程序将需要遍历参数来获得计数。此外,在许多具有长度的数组的编程语言中,没有任何argc
参数,只有一个包含项的数组。
https://stackoverflow.com/questions/18547114
复制相似问题