c 結構體初始化

2021-06-17 00:30:44 字數 552 閱讀 3149

在《系統程式設計師成長計畫》看到的,好像有點道理。

// 宣告 

struct s; 

// 習慣的初始化  

struct s h = ;   

這種初始化是按結構體成員宣告的順序進行初始化的,

即利用了struct記憶體布局的方法。  

若struct成員順序被修改了,初始化將引入隱患。 

幸運的話會收到編譯器的warning或error, 

否則很可能會有難以捉摸的bug。 

//更安全的初始化

struct s h = ;       

安全的做法指定了被初始化的成員,與宣告順序無關。

即使是struct取消了原有的的成員,

初始化不存在的成員,編譯器將報錯。   

我的想法:

可以寫乙個負責初始化的函式initial(),類似c++建構函式的東西,不過需要自己呼叫。  

雖然效率可能會稍低一點點,但是如果初始化需要修改的話,

就只需要修改函式本身。   

使用巨集拓展的話感覺還是不那麼好,畢竟沒有型別檢查嘛。 

C 結構體初始化

今天在看mfc結構時,順便看了看 深入淺出mfc 發現有這麼一行 m pmainwnd new cmyframewnd 乍一看,很正常啊,再仔細一看,貌似 new cmyframewnd 的時候少了一對括號。奇怪!之後又翻了翻書,發現好多處都是這樣的。難道我弄錯了,不可能啊,一般情況下在new乙個新...

C 結構體初始化

結構體初始化的三種方式 方式1using namespace std struct student int main void printf kyrie的名字 s 手機號 s 年齡 d n kyrie.name,kyrie.phone.c str kyrie.age return0 方式2 有的編譯...

結構體初始化 指定初始化

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