argv[argc]是否等于空指针

argv[argc]是否等于空指针,c,linux,argv,C,Linux,Argv,我读了一篇文章(忘记了URL),上面说argv[argc]是NULL指针(包含\0)。为了检查它是否是真的,我写了这段代码,是的,它存在。我不明白的是,为什么操作系统在argv[argc]处包含这个NULL指针。它对其他东西也有用吗 int main (int argc, char **argv){ while (*argv) printf ("%s\n", *argv++); return 0; } C标准5.1.2.2.1/2第二个标记明确表示 argv

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

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

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

    return 0;
}

C标准
5.1.2.2.1/2
第二个标记明确表示

argv[argc]应为空指针

< > C++标准>代码> 3.61/1 也明确表示

argv[argc]的值应为0

本标准(C99 5.1.2.2.1p2)规定:

如果已声明,则主功能的参数应遵守 以下限制:

-argc的值应为非负

-argv[argc]应为空指针


其基本原理是根据常见做法(参考:ANSI C编程语言的基本原理(1990),2.1.2.2)为参数列表的结尾提供冗余检查。

“argv[0]应是指向NTMBS的初始字符的指针,该字符表示用于调用程序的名称或”“。argc的值应为非负。argv[argc]的值应为0。“至于你关于天空颜色的问题:@rubenvb:D@MarounMarounslowpoke:)这是当问题标题不反映问题主体时发生的情况@提洛:还有:那为什么天空不是紫色的呢?编辑:我看到第二个链接聪明地回答了这个问题。我必须找到更好的复述问题。