結構體初始化

2021-06-02 02:17:25 字數 1449 閱讀 6000

**: 

結構體變數初始化

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 相比較方法一,方法二明顯...