1. ホーム
  2. c

[解決済み] C言語の配列初期化における角括弧の意味とは?

2023-03-25 07:34:11

質問

static uint8_t togglecode[256] = {
    [0x3A] CAPSLOCK,
    [0x45] NUMLOCK,
    [0x46] SCROLLLOCK
};

の意味は何ですか? [0x3A] はどういう意味ですか?のような文しか習ったことがありません。 int a[2] = {1, 2};

どのように解決するのですか?

それは n -を初期化することを意味します。与えられた例では、そのような意味になります。

togglecode[0x3A] == CAPSLOCK
togglecode[0x45] == NUMLOCK
togglecode[0x46] == SCROLLLOCK

これらは 指定初期化子"。 と呼ばれ、実際に C99 標準の一部となっています。しかし、この構文では = がない構文はそうではありません。そのページより。

GCC 2.5から廃止されましたが、GCCがまだ受け入れているこのための代替構文は、次のように書きます。 [index] を要素の値の前に書くことです。 = .