argv [argc]是否等于NULL指针

dim*_*tar 10 c linux argv

我读了一篇文章(忘了URL),里面说的argv[argc]是一个NULL指针(包含\0).要检查是否真的我写了这段代码,是的,它存在.我不明白的是,为什么操作系统包含此NULL指针argv[argc].它对其他东西也有用吗?

int
main (int argc, char **argv){

    while (*argv)
        printf ("%s\n", *argv++);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

rub*_*nvb 10

C标准5.1.2.2.1/2第二标记明确说明

argv [argc]应为空指针.

C++标准3.6.1/2也明确说明了

argv [argc]的值应为0.

  • 当问题标题不反映问题正文时会发生这种情况.@Thilo:还有:那天为什么天不是紫罗兰?**编辑:**我看到第二个链接智能地回答了那个. (2认同)
  • 我将不得不找到更好的反思问题. (2认同)

Mic*_*kis 5

标准(C99 5.1.2.2.1p2)规定:

如果声明它们,main函数的参数应遵循以下约束:

- argc的值应为非负值.

- argv [argc]应为空指针.

...

其基本原理是在通用实践的基础上为参数列表的末尾提供冗余检查(参考:ANSI C编程语言的基本原理(1990),2.1.2.2).