argv[argc]是否等于空指针
我读了一篇文章(忘记了URL),上面说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
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:)这是当问题标题不反映问题主体时发生的情况@提洛:还有:那为什么天空不是紫色的呢?编辑:我看到第二个链接聪明地回答了这个问题。我必须找到更好的复述问题。