0

main関数でargv引数を宣言する方が良い方法は何だと思いますか?その理由は何ですか?

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

argvは、最終的にはポインターとして関数に入ります-argvアドレスのコピーとしてではなく、配列としてではありませんか?したがって、他の選択肢も構文的に正しい必要があると思いますが、どちらの方法をお勧めしますか?

よろしく

4

4 に答える 4

6

char *argv[]それが何を意味するかについて最も明確です-文字列の配列。

char **argvあなたが怠け者ならタイプするのが最も速いです。

char (*argv)[]なぜ使うのかわかりません。

于 2011-11-11T08:49:01.670 に答える
3

使用*argv[]するのが伝統的な方法ですが、私はプログラムも使用するのを見てき**argvました。

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

于 2011-11-11T08:52:03.340 に答える
2

私は個人的に好きです

char *argv[]

argvIMOの方がわかりやすいからです。それchar*はの配列、つまり文字列の配列であり、これが私が期待argvしていることです。ダブルポインタではありません。3番目のバリアントは問題ないようで、2番目のバリアントと同等です。

于 2011-11-11T08:49:44.883 に答える
1

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

char **argvより簡潔ですが、「ポインターからポインター」は、渡されるワウトを正確に記述していないように感じます。

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

于 2011-11-11T08:53:17.980 に答える