0

1) C++ では、イニシャライザ リストを指定{}するのと同じ{0}ですか? ステートメントは次のとおりです。

int x[10]={};

int x[10]={0};

両方とも、すべての要素が 0 に初期化された同じ配列を生成しますか?

2)NULLが 0 でないシステム/コンパイラでは、ポインタの配列のデフォルト値の初期化によって要素が NULL または 0 に設定されますか? 次のステートメントのうち、使用する必要がある/使用できるものはどれですか?

int *x[10]={NULL};

int *x[10]={0};

int *x[10]={};

new空の括弧を使用する値初期化子はどうですか? 初期化子として NULL または 0 を使用しますか?

int **x=new int*[10]();

4

1 に答える 1

5
  1. はい。これらの初期化子はどちらも機能的に同等です。違いは、2 番目のものは最初の要素を 0 に明示的に初期化し、配列内の残りのすべての要素を暗黙的に値で初期化することです ( の場合はint、それらを 0 に設定することを意味します)。

  2. NULL0C++ 標準に準拠するすべてのコンパイラにあります。この例では、3 つすべてが機能の点で同じです。NULLは に展開されるマクロな0ので、最初の 2 つはコンパイラの目には同一です。C++11 との取引がどうなるかはわかりませんが、ポインターの値の初期化は、そのポインターを に設定することを意味しますNULL

于 2012-05-03T03:28:49.210 に答える