1

C++ では、次のようにします。

char myArray[] = {'1','2','3','4','5','6','7','8','9'}; 

それは10個のスペースを割り当てますか?最後の要素は「/0」ですか?

どうですか:

char myArray[9] = {'1','2','3','4','5','6','7','8','9'}; 

この場合、9 つのスペースしか割り当てませんでしたか? これは悪いですか?

そして、最後に、私が行うとどうなりますか:

char myArray[10] = {'1','2','3','4','5','6','7','8','9','/0'}; 
4

4 に答える 4

9
char myArray[] = {'1','2','3','4','5','6','7','8','9'}; 

それは10個のスペースを割り当てますか?最後の要素は「/0」ですか?

9号。


char myArray[9] = {'1','2','3','4','5','6','7','8','9'}; 

この場合、9 つのスペースしか割り当てませんでしたか?

はい。

これは悪いですか?

いいえ。


そして最後に、私がそうするとどうなりますか

char myArray[10] = {'1','2','3','4','5','6','7','8','9','/0'}; 

あなたが意味していると仮定すると'\0'、まさにそれがどのように見えるか.

これらのケースのいずれにも魔法はありません — 求めているものを正確に得ることができます。

自動ヌル終了は、文字列リテラルで機能するものです:

char myArray1[10] = "123456789";
char myArray2[9]  = "123456789";  // won't compile - wrong size
char myArray3[]   = "123456789";  // still 10 elements - includes null terminator
于 2012-11-12T16:21:39.283 に答える
3

NULいいえ、文字列リテラルを使用する場合にのみ末尾を取得します。つまり:

// Array of 10 bytes
char myArray[] = "123456789";

// same as:
char myArray[] = {'1','2','3','4','5','6','7','8','9','\0'}; 
于 2012-11-12T16:22:00.440 に答える
1

charlist-initializationを使用する場合、配列は他の配列と同じように動作します。期待しますか

int x[] = {1,2};

0最後の要素として魔法のようにを追加し、x3つの要素を持つようにするには?

提供する要素が少ない場合、最後の要素は値で初期化されるため、

char myArray[10] = {'1','2','3','4','5','6','7','8','9'}; 

nullで終了しますが、

char myArray[9] = {'1','2','3','4','5','6','7','8','9'}; 

そうではありません。

于 2012-11-12T16:24:06.423 に答える
1
char myArray[] = {'1','2','3','4','5','6','7','8','9'}; 

これにより、9 つの要素のみが割り当てられます。

char myArray[9] = {'1','2','3','4','5','6','7','8','9'}; 

はい、この行も 9 つの要素を割り当てます。

char myArray[10] = {'1','2','3','4','5','6','7','8','9','/0'}; 

最後のものは'\0'代わりにする必要があり'/0'ます。

あなたが考えていることは

char myArray[] = "123456789";

10文字を割り当てます('\0'文字列リテラルの末尾に1文字)

于 2012-11-12T16:23:45.780 に答える