**:
結構體變數初始化
tag:結構體,結構體變數,結構體變數宣告,結構體變數初始化,結構體變數引用,結構體成員變數引用
text: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所示。
表9-1 基本資料型別成員變數的初始化預設值
資料型別
預設初始化值
int0
char
『\0x0』
float
0.0double
0.0char array[n]
「」int array[n]
對於複雜結構體型別變數的初始化,同樣遵循上述規律,對結構體成員變數分別賦予初始化值。例如:
struct line
oline1=, /*初始化startpoint*/
/*初始化endpoint */
};其中常量0用於初始化oline1的基本型別成員變數id;常量列表用於初始化oline1的struct point型別成員變數startpoint;常量列表用於初始化oline1的struct point型別成員變數endpoint。
結構體初始化 指定初始化
參考 c99支援結構的指定初始化專案,其語法與陣列的指定初始化專案近似。只是,結構的指定初始化專案使用點運算子和成員名 而不是方括號和索引值 來標識具體的元素。例如,只初始化book結構的成員value,可以這樣做 struct book surprise 可以按照任意的順序使用指定初始化專案 st...
C 結構體初始化
今天在看mfc結構時,順便看了看 深入淺出mfc 發現有這麼一行 m pmainwnd new cmyframewnd 乍一看,很正常啊,再仔細一看,貌似 new cmyframewnd 的時候少了一對括號。奇怪!之後又翻了翻書,發現好多處都是這樣的。難道我弄錯了,不可能啊,一般情況下在new乙個新...
結構體的初始化
早先在看開源 中學到的乙個初始化結構體的技巧,今天剛剛用上。特意整理了一下。struct a 早先我所採用的方法 方法一 struct a a a.a 1 a.b 2 現在所採用的方法 方法二 是從開源 中所學會的,定義結構體的同時初始化結構體成員變數 struct a a 相比較方法一,方法二明顯...