陣列,結構體初始化 0

2021-06-26 15:38:35 字數 2179 閱讀 8025

一直以為 int a[256]=;是把a的所有元素初始化為0,int a[256]=;是把a所有的元素初始化為1.

除錯的時檢視記憶體發現不是那麼一回事,翻了一下《the c++ programming language》總算有定論。pdf的竟然不然複製,就把它這章翻譯了,如下

5.2.1   陣列初始化

陣列可以用乙個列值來初始化,例如

int v1 =;

char v2=;

當陣列定義時沒有指定大小,當初始化採用列表初始化了,那麼陣列的大小由初始化時列表元素個數決定。所以v1和v2分別為 int[4] 和char[4]型別。如果明確指定了陣列大小,當在初始化時指定的元素個數超過這個大小就會產生錯誤。例如:

char   v3[2] =;   //錯誤:太多的初始化值了

char   v3[3] =;   //正確

如果初始化時指定的的元素個數比陣列大小少,剩下的元素都回被初始化為   0。例如

int   v5[8]=;

等價於int   v5[8]=;

注意沒有如下形式的陣列賦值:

void f()

;   //錯誤:不是陣列賦值

}如果你想這樣的複製的話,請使用 vector(16章第三節) 或者 valarray(22章第四節)。

字元陣列可以方便地採用字串直接初始化(參考第五章 2.2小節)

譯註: 就是 這樣啦   char   alpha ="abcdefghijklmn";

the c++ programming language ,third edition by bjarne stroustrup.

、、、、、、、、、、、、、、、、、、、、、、、、、、、///

/、、、、、、、、、、、、

/該問題涉及到資料型別初始化的問題,現將c語言中資料型別初始化總結如下

簡單變數的初始化形式如下: 資料型別 變數名=初始化值;

例如,定義整型變數a,並給其初始化值10的語句如下

int a=10;

陣列的初始化,需要通過一常量資料列表,對其陣列元素分別進行初始化,形式如下:

資料型別 陣列名稱〔陣列長度〕=;

例如,定義長度為5的整型陣列,並對其初始化的語句如下:

int a[5]=;

結構體變數的初始化方式與陣列類似,分別給結構體的成員變數以初始值,而結構體成員變數的初始化遵循簡單變數或陣列的初始化方法。具體的形式如下:

struct 結構體識別符號

;struct結構體識別符號 變數名=;

例如,定義struct point型別變數,並初始化的語句如下:

struct point op1=;

struct point型別變數op1的三個成員變數的值分別為

op1.x=0.0,

op1.y=0.2

op1.z=0.3

由於定義結構體變數有三種方法,因此初始化結構體變數的方法對應有三種,上面已經介紹了其中的一種形式,其他兩種形式如下:

struct point

op1=; struct

op1=;

在初始化結構體變數時候,既可以初始化其全部成員變數,也可以僅僅對其中部分的成員變數進行初始化。例如:

struct student

a= ;

其相當於a.id=0;a.name=「」;a.***=『/0x0』。

僅僅對其中部分的成員變數進行初始化,要求初始化的資料至少有乙個,其他沒有初始化的成員變數由系統完成初始化,為其提供預設的初始化值。各種基本資料型別的成員變數初始化預設值如表9-1所示。

資料型別

預設初始化值

int                   0

char                『/0x0』

float                0.0

double               0.0

char array[n]        」

int array[n]        

對於複雜結構體型別變數的初始化,同樣遵循上述規律,對結構體成員變數分別賦予初始化值。例如:

struct line

oline1=,

};其中常量0用於初始化oline1的基本型別成員變數id;常量列表用於初始化oline1的struct point型別成員變數startpoint;常量列表用於初始化oline1的struct point型別成員變數endpoint。

結構體初始化 指定初始化

參考 c99支援結構的指定初始化專案,其語法與陣列的指定初始化專案近似。只是,結構的指定初始化專案使用點運算子和成員名 而不是方括號和索引值 來標識具體的元素。例如,只初始化book結構的成員value,可以這樣做 struct book surprise 可以按照任意的順序使用指定初始化專案 st...

結構體初始化

結構體變數初始化 tag 結構體,結構體變數,結構體變數宣告,結構體變數初始化,結構體變數引用,結構體成員變數引用 text c語言中引用變數的基本原則是在使用變數前,需要對變數進行定義並初始化。其方法是在定義變數的同時給其一初始值。結構體變數的初始化,遵循相同的規律。簡單變數的初始化形式如下 資料...

Linux GNU C結構體陣列初始化示例

突然心血來潮,想學習一下結構體陣列的初始化方面的知識。gcc特有的陣列初始化的風格 陣列賦值另一種方式,但只在gcc下編譯通過,g 不能 enum 只對感興趣的索引值進行賦值,而不管下標的順序 static const int regs 這種風格在kernel 中經常看到。它不按照陣列下標順序,而是...