簡體   English   中英

初始化C結構中的一個成員以獲取結構元素數組

[英]Initializing only one member in a C struct for an array of struct elements

我有以下代碼旨在初始化成員b。 所有MAX_SIZE結構都應該發生這種情況。

enum { MAX_SIZE = 10 };

struct some
{
    int a, b;
}
many[MAX_SIZE] = { {.b = 5} };

int main() 
{
    int i;

    for (i = 0; i < MAX_SIZE; i++)
    {
        printf("%d, %d\n", many[i].a, many[i].b);
    }
}

我需要輸出看起來像:

0, 5
0, 5
0, 5
... (10 times)

但是,實際輸出為:

0, 5
0, 0
0, 0
... (10 times)

如何在不需要顯式for循環來分配值的情況下獲得所需的輸出? 我知道在C ++中,這是通過僅為初始化b的結構提供構造函數來實現的。

它不是C Standard,但是通過gcc擴展,您可以執行以下操作:

struct some many[10] = { [0 ... 9].b = 5 };

它也適用於clang >= 5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM