main関数でargv引数を宣言する方が良い方法は何だと思いますか?その理由は何ですか?
int main(int argc, char **argv /* char *argv[] */ /* char (*argv)[] */) {
//...
}
argvは、最終的にはポインターとして関数に入ります-argvアドレスのコピーとしてではなく、配列としてではありませんか?したがって、他の選択肢も構文的に正しい必要があると思いますが、どちらの方法をお勧めしますか?
よろしく
char *argv[]
それが何を意味するかについて最も明確です-文字列の配列。
char **argv
あなたが怠け者ならタイプするのが最も速いです。
char (*argv)[]
なぜ使うのかわかりません。
使用*argv[]
するのが伝統的な方法ですが、私はプログラムも使用するのを見てき**argv
ました。
バリアント(*argv)[]
は実際にはの反対で*argv[]
あり、最初は配列へのポインター(この場合は間違っています)、最後はポインターの配列です。
私は個人的に好きです
char *argv[]
argv
IMOの方がわかりやすいからです。それchar*
はの配列、つまり文字列の配列であり、これが私が期待argv
していることです。ダブルポインタではありません。3番目のバリアントは問題ないようで、2番目のバリアントと同等です。
char *argv[]
実際に渡されるものの最も明確な表現であるため、私は好きです。文字列へのポインタの配列。
char **argv
より簡潔ですが、「ポインターからポインター」は、渡されるワウトを正確に記述していないように感じます。
3番目のオプションの余分な括弧は、物事を混乱させるだけです。