GNU C中陣列指定初始化

choumin發表於2020-12-21

在GNU C中,陣列支援指定初始化。簡單來說,就是在初始化陣列和結構體時,可以通過指定陣列下標或者具體成員名來賦初值。
例如支援下面這樣的初始化:

int array[6] = { [4] = 29, [2] = 15 }; // 可以不按順序賦值

還支援將陣列中指定範圍內的元素賦值為相同的值:

int array[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };

利用這個特性,我們可以在申請陣列的同時進行初始化,比如全部清零:

int array[NR_MAX + 1] = {[0 ... NR_MAX] = 0}

這相當於呼叫了memset(array, 0, sizeof(array)),比較了一下效能,發現基本相同。
 

相關文章