0

Linux でこのコード構造に出会い、理解したいと思います

struct mystruct {
  int x;
  int b[40];
};


/*later */

static struct mystruct e = { .x = 5,
                             .b = {-1},   
                           };

.b = {-1} は何をしますか? 配列 b の最初またはすべての要素のみを初期化しますか? それはどのように機能しますか?

4

2 に答える 2

3
static struct mystruct e = {
    .x = 5,
    .b = {-1},   
             };

ここでは b[0] を -1 に初期化します。他の要素は 0 に初期化されます。

于 2012-05-09T12:46:48.483 に答える
1

これは、構造体のメンバー b を、-1 で始まり 0 が続く配列で初期化することを意味します。

  • .b =GCC 拡張機能です。(コメントされているように、C99からはこれも標準の一部です)
  • これ{-1}は標準的な配列の初期化です。
于 2012-05-09T12:35:34.663 に答える