結構體struct的初始化

2021-06-20 09:15:46 字數 1153 閱讀 7271

在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...