1. ホーム
  2. c

[解決済み] C char配列の初期化

2022-03-13 04:14:18

質問

以下の方法で初期化した後、char配列に何が入るのかがわかりません。

1. char buf[10] = "";
2. char buf[10] = " ";
3. char buf[10] = "a";

ケース2の場合、私は buf[0]' ' , buf[1]'\0' から、そして buf[2] から buf[9] はランダムなコンテンツになります。ケース3の場合、私は buf[0] であるべきです。 'a' , buf[1] は 'Ⅻ' であるべきであり buf[2] から buf[9] はランダムなコンテンツになります。

ということでよろしいでしょうか?

また、ケース1の場合、その中の buf ? buf[0] == '\0' で、以下は buf[1]buf[9] はランダムコンテンツになるのでしょうか?

解決方法は?

これは、配列を初期化する方法ではなく、forです。

  1. 最初の宣言です。

    char buf[10] = "";
    
    

    は、以下と同等です。

    char buf[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    
    
  2. 2つ目の宣言です。

    char buf[10] = " ";
    
    

    は、以下と同等です。

    char buf[10] = {' ', 0, 0, 0, 0, 0, 0, 0, 0, 0};
    
    
  3. 3つ目の宣言です。

    char buf[10] = "a";
    
    

    は、以下と同等です。

    char buf[10] = {'a', 0, 0, 0, 0, 0, 0, 0, 0, 0};
    
    

見ての通り、ランダムな内容ではありません。初期化子の数が少なければ、配列の残りは、初期化子として 0 . これは、配列が関数の内部で宣言されている場合でも同じです。