在c語言中,對結構體的初始化,可以有一下三種。
struct
test
;int
main()
;struct
test t2=;
struct
test t3=;
printf("t1.a = %d, t1.b = %d\n", t1.a, t1.b);
printf("t2.a = %d, t2.b = %d\n", t2.a, t2.b);
printf("t3.a = %d, t3.b = %d\n", t3.a, t3.b);
return0;}
第一種使我們最常見的方式,2,3中是gcc的擴充套件,非標準。
而在c++當中,若類和結構體所有資料成員均為public型,可採取如下帶花括號形式進行初始化。
注意:① 不論值的個數多少,都必須使用花括號定界
②未指定值的資料成員編譯器會自動初始化為預設值
③這種初始化物件方式,要求所有資料成員必須為public型
④這種初始化物件方式,要求類中不能編寫任何建構函式
struct s ;
s tests1=;
s tests2=;//未指定值的資料成員初始化為預設值,這裡os2.y=0;
s tests[4]=,
, };//未指定值的初始化為預設值,os[2].y,os[3].x,os[3].y。
若資料成員有private或protected型,或是提供了建構函式,必須使用建構函式來進行初始化。
struct s
s(int idemo,double ddemo)
void show(void) ;
s os1;//將呼叫預設建構函式(無參建構函式)
s os2(1000,2.345);
s os3=s(2000,4.567);
s os[4]=;//未初始化的將呼叫預設建構函式。如此時沒有預設建構函式會出錯。
struct結構體初始化
參考 初始化方式 第1 種 定義時初始化 方式一 點操作符 struct a a1 方式二 struct a a1 方式三 struct a a1 核心喜歡用方式一,使用方式二和方式三時,成員初始化順序可變,使用方式三時初始化順序不可變。第2 種 在c 中,結構體與類在使用上已沒有本質上的區別了,所...
C中struct(結構體)初始化的問題
在leetcode上做一道用struct作為鍊錶節點的題目時,遇到了一次runtime error。後來排查原因,發現是在一次寫了如下的語句 new digit next struct listnode malloc sizeof struct listnode new digit new digi...
結構體初始化 指定初始化
參考 c99支援結構的指定初始化專案,其語法與陣列的指定初始化專案近似。只是,結構的指定初始化專案使用點運算子和成員名 而不是方括號和索引值 來標識具體的元素。例如,只初始化book結構的成員value,可以這樣做 struct book surprise 可以按照任意的順序使用指定初始化專案 st...