linux c結構體更合理的初始化方法

2021-07-02 00:07:38 字數 1049 閱讀 3772

教科書上講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...