gcc對陣列初始化對擴充套件

2021-10-10 07:40:13 字數 977 閱讀 3298

今天研究乙個問題時看linux的核心**,偶然間發現一段有趣的**。直接上圖:

從圖中**可以看出這是乙個int陣列,並且對該陣列進行了初始化。但有意思的是本**中陣列初始化中使用了陣列下標,並且還可以批量初始化。

檔名稱test.c

內容:

#include

#define test_max 10

static

int test_int_arr[test_max]=;

intmain

(int argc,

char

**ar**)

return0;

}

***x:~$ gcc -o test test.c

***x:~$ ./test

0000. -1

0001. -1

0002. -1

0003. -1

0004. -1

0005. 5

0006. -1

0007. -1

0008. -1

0009. 9

***x:~$

原文引用:

從gcc的官方文件中可以得知,上面的這種形式的陣列初始化是iso c99的新特性(相較於c90)。在c99標準中,允許以任意順序指定陣列的索引或結構的名稱。所以gnu c也對該擴充套件進行了相應的支援(注意,這個擴充套件不是在gnu c++中實現的)。

示例:int a[6] = ;

等價**:

int a[6] = ;

示例:int widths = ;

等價**:

int widths = ;

示例:int a[6] = ;

等價**:

int a[6] = ;

對陣列初始化,清空,逆置

include include include void initarray int a,int size void reversearray int a,int size printf d a i void emptyarray int a,int size int main assert 巨集的...

陣列初始化

cpp中陣列初始化方法 簡單的初始化 利用定義變數時賦初值進行初始化。int a 10 float f 10 char ch 5 大括號中的為初始值。較為複雜的初始化 利用memset函式初始化。memset函式用法 void memset void s,int c,size t n 將已開闢記憶體...

陣列初始化

flydream flydream c cat x.cpp include using namespace std int main int argc,char argv flydream flydream c flydream flydream c g g wall x.cpp x.cpp in ...