argv [argc]是否等于NULL指针

时间:2013-05-07 12:21:08

标签: c linux argv

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

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

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

    return 0;
}

2 个答案:

答案 0 :(得分:10)

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

  

argv [argc]应为空指针。

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

  

argv [argc]的值应为0.

答案 1 :(得分:5)

标准(C99 5.1.2.2.1p2)规定:

  

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

     

- argc的值应为非负值。

     

- argv [argc]应为空指针。

     

...

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