首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我们需要argc,而argv的末尾总是有一个空值?

为什么我们需要argc,而argv的末尾总是有一个空值?
EN

Stack Overflow用户
提问于 2013-08-31 18:26:53
回答 1查看 7.9K关注 0票数 120

看起来argv[argc]总是NULL,所以我想我们可以在没有argc的情况下遍历参数列表。一个while循环就可以做到这一点。

如果argv的末尾总是有NULL,为什么我们还需要argc

EN

回答 1

Stack Overflow用户

发布于 2013-09-01 16:55:01

我们“需要”它,因为它是各种标准所要求的。

我们可以完全忽略这个值,但是因为它是main的第一个参数,所以我们必须将它包含在参数列表中。在C++ (可能是非标准的C语言)中,您只需省略参数名称,就像下面这样的C++代码片段(易于转换为C语言):

代码语言:javascript
复制
#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参数,只有一个包含项的数组。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18547114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档