2011-11-11 20 views
0

main関数のargv引数をどのようにして宣言するのが良いと思いますか?右、ちょうどARGVアドレスのコピーとしてではなく配列として -C:メイン関数のArgv宣言

int main(int argc, char **argv /* char *argv[] */ /* char (*argv)[] */) { 
    //... 
} 

argvが、最終的にポインタとしての機能になりますか?だから私は、他の選択肢も構文的に正しいものでなければならないと思っていますが、どの方法で好きですか?文字列の配列を -

よろしく

+1

あなたはどちらの方が好きですか?私はほとんどのプログラマーが最後の宣言さえ理解するだろうと思う。 – semisight

答えて

5

char *argv[]は、それが何を意味するのかについての最も明示的です。

char **argvは、あなたが怠け者であれば最も速く入力できます。

char (*argv)[]私はなぜあなたが使うのか分かりません。

2

それはIMO、argvより良いを記述しているので、私は個人的に

char *argv[] 

を好みます。 char*の配列です。文字列の配列です。これは、argvの文字列です。ダブルポインタではありません。 3番目の変種はokと思われ、2番目の変種と同等です。

3

従来の方法では*argv[]を使用していますが、**argvを使用したプログラムも見ています。

実際には*argv[]の反対で、最初のものは配列へのポインタです(この場合は間違っています)。最後はポインタの配列です。

1

私はchar *argv[]が好きですが、これは実際に渡されるものの最も明白な表現です。文字列へのポインタの配列。

char **argv私は「ポインターへのポインター」は正確にワットが渡されているとは言えません。

3番目のオプションの余分な括弧は、物事を混乱させるだけです。