在《系統程式設計師成長計畫》看到的,好像有點道理。
// 宣告
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...