教科書上講c語言結構體初始化是按照順序方式來講的,沒有涉及到亂序的方式。順序初始化struct必須要按照成員的順序進行,缺一不可,如果結構體比較大,很容易出現錯誤,而且表現形式不直觀,不能一眼看出各個struct各個資料成員的值。
亂序初始化是c99標準新加的,比較直觀的一種初始化方式。相比順序初始化而言,亂序初始化就如其名,成員可以不按照順序初始化,而且可以只初始化部分成員,擴充套件性較好。linux核心中採用這種方式初始化struct。
亂序初始化有兩種方式,一種是用點(.)符號,一種是用冒號(:)。方式1是c99標準,方式2是gcc的擴充套件,強烈建議使用第一種方式。
/****************************
*linux 下 c語言結構體初始化方法
*@author lxj
***************************/
#include//函式指標
typedef int (*caculate_cb)(int a,int b);
//結構體定義
typedef struct _operoper;
//加法函式
int add(int a,int b)
int main();
//亂序初始化
oper oper_two=;
//亂序初始化
oper oper_three=;
ret=oper_one.cal_func(oper_one.a,oper_one.b);
printf("oper_one caculate:ret=%d\n",ret);
ret=oper_two.cal_func(oper_two.a,oper_two.b);
printf("oper_two caculate:ret=%d\n",ret);
ret=oper_three.cal_func(oper_three.a,oper_three.b);
printf("oper_three caculate:ret=%d\n",ret);
return 0;
}
更合理的使用setState
react中的setstate 為我們提供了元件內的狀態管理方案,本文將從component的角度來說明更合理的setstate 在 react 文件的 state and lifecycle 一章中,明確的說明setstate 的用法,向setstate 中傳入乙個物件來對已有的 state 進行...
PCB如何更合理的拼版
1 pcb拼板的外框 夾持邊 應採用閉環設計,確保pcb拼板固定在夾具上以後不會變形 2 pcb拼板寬度 260mm siemens線 或 300mm fuji線 如果需要自動點膠,pcb拼板寬度 長度 125 mm 180 mm 3 pcb拼板外形盡量接近正方形,推薦採用2 2 3 3 拼板 但不...
linux c結構體學習
includestruct weaponweapon 1 下面宣告變數的寫法這種類似,這種將weapon 1放在結構體後面宣告只適用於小型系統,如果是單個結構體可以使用struct weapon 1的寫法進行定義int main 宣告變數,定義變數 printf s n,d n weapon 1.n...