是argv [argc]等于NULL指针
问题描述:
我看了一篇文章(忘记了URL),其中说argv[argc]
是一个NULL
指针(包含\0
)。为了检查它是否属实,我写了这段代码,它是存在的。我不明白的是,为什么操作系统将这个NULL
指针包含在argv[argc]
处。它对其他的东西有用吗?是argv [argc]等于NULL指针
int
main (int argc, char **argv){
while (*argv)
printf ("%s\n", *argv++);
return 0;
}
答
标准(C99 5.1.2.2.1p2)的任务是:
如果声明了,主函数的参数应服从 以下约束:
- argc的值应该是非负的。
- argv [argc]应该是一个空指针。
...
这样做的原因是提供的参数列表的最后一个冗余的检查,通常的做法的基础上(参考:理由的ANSI C编程语言(1990年),2.1.2.2)。
“* argv的[0]应为指针NTMBS的初始字符表示用于调用该程序或名称‘’。的argc的值应为正数。的argv的值[的argc]应0. *“ – Maroun 2013-05-07 12:26:28