重複の可能性:
C では、配列ポインターまたはポインターとして使用されますか?
C++ では、デフォルトの main 関数は char* argv[] のような引数を持つことができます。char** および char* argv[100] との違いは何ですか?
重複の可能性:
C では、配列ポインターまたはポインターとして使用されますか?
C++ では、デフォルトの main 関数は char* argv[] のような引数を持つことができます。char** および char* argv[100] との違いは何ですか?
関数のパラメータに違いはありません。他の状況では、1 つ目はポインターを宣言し、2 つ目は配列を宣言します。
char**
へのポインタへのポインタchar
です。
2 番目char *argv[100]
は、char へのポインターの配列です。
しかし、配列を関数に渡すと、それらはポインターに減衰します。
char** argv
: char* argv[100] と同じ動作を引き出すには、char ポインターを格納するための領域を動的に割り当てる必要があります。例えば:(*argv) = new char[100];
二重ポインタは、C++ に固有の非常に柔軟なデータ型であり、非常識な速度と非常識なバグを与える可能性があります。一般に、配列のサイズがわかっている場合は、動的メモリ割り当てを避けるのが最善です。