2013-05-07 14 views
9

argv[argc]NULLポインタ(\0を含む)であると言った記事(忘れたURL)を読んだ。そのコードが本当に私がこのコードを書いたかどうかを調べるには、それは存在します。私が理解できないのは、なぜOSにNULLポインタがargv[argc]にあるのかということです。それは他にも役に立ちますか?argv [argc]がNULLに等しいかどうかポインタ

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

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

    return 0; 
} 
+0

"* argv [0]は、プログラムを呼び出すために使用される名前を表すNTMBSの最初の文字へのポインタでなければならない" "argc [argc]の値は、 0. * " – Maroun

答えて

9

C標準5.1.2.2.1/2第二マークは、明示的

ヌルポインタでなければならない[ARGC] ARGV言います。

C++標準3.6.1/2もARGVの明示的

値[ARGC] 0

+0

はい、これの動機は何ですか? – Thilo

+0

空が青いのはなぜですか? 'char'のヌル終端配列のヌル終端配列です。私は一貫性を推測し、OPが書いたようにコードを容易にするだろう。 – rubenvb

+0

参照してください、あなたはそれを行うことができます。 :-)私には良い答えのように聞こえます。 – Thilo

5

標準(C99 5.1.2.2.1p2)任務でなければならないと言う。

宣言されている場合、main関数のパラメータは、 に次の制約に従います。

- argcの値は負でないものとする。

- argv [argc]はNULLポインタです。

...

この理論的根拠は、一般的な方法に基づいて、引数リストの終わりのための冗長チェックを提供することである

(参照:ANSI Cプログラミング言語のための理論的根拠(1990 )、2.1.2.2)。

関連する問題