C語言——結構體(初階版)

首頁 > 科技

C語言——結構體(初階版)

來源:水果怎麼吃 釋出時間:2022-09-21 16:30

1.定義和使用結構體變數

結構體的基礎知識

結構是一些值的集合,這些值稱為成員變數。結構的每個成員可以是不同型別的變數。

自己建立結構體型別

結構的成員可以是標量、陣列、指標,甚至是其他結構體。

struct結構體名

{成員表列}:↓

注意:結構體型別的名字由一個關鍵字struct和結構體名組合而成的(例如structStudent)結構體名是由使用者指定的,又稱"結構體標記"(structuretag),以區別於其他結構體型別。上面的結構體宣告中Student就是結構體名(結構體標記)

型別名成員名:

"成員表列"也稱為"域表",每一個成員是結構體中的一個域。成員名命名規則與變數名相同

宣告結構體的形式

結構體的初始化

程式碼詳解:

structpoint{intx;inty;};p1;//宣告型別的同時定義變數p1structpointp2;//定義結構體變數p2structstu{charname[20];//名字intage;//年齡};structstus={"lisi",25};//初始化structNode{intdata;structpointp;structNode*next;};n={10,{4,5},NULL};//結構體的巢狀初始化structNoden2={20,{5,6},NULL};//結構體巢狀初始化

2.結構體成員的訪問

結構體變數訪問成員

結構變數的成員是透過點運算子

訪問的。點運算子接受兩個運算元。

例如:

我們可以看到s裡面有成員name和age

那我們如何訪問呢?

structSs;strcpy(s.name,"zhangsan");//使用.訪問name成員s.age=20;//使用.訪問age成員

結構體指標訪問指向變數的成員

有時候我們得到的不是一個結構體變數,而是指向一個結構體的指標。

那該如何訪問成員。

如下:

3.結構體傳參

話不多說直接上程式碼!

structp{intdata[900];intn;};structps={{4,3,2,1},900};//結構體傳參voidpoint1(structps){printf("%d%dn",s.data,s.n);}//結構體地址傳參voidpoint2(structp*s1){printf("%d%dn",s1->data,s1->n);}intmain{point1(s);//傳結構體point2(&s);//傳地址return0;}

對於上面的兩種函式point1和point2哪種函式好一些呢?

首選point2函式

原因:

函式傳參的時候,引數是需要壓棧的。

如果傳遞一個結構體物件的時候,結構體過大,引數壓棧的的系統開銷比較大,所以會導致效能的

下降

結論:

結構體傳參的時候,要傳結構體的地址。

以上就是小王同學給大家收拾整頓的一些初階版認識結構體啦

後面會給大家帶來進階版的(肝疼.jpg)

1.定義和使用結構體變數

結構體的基礎知識

結構是一些值的集合,這些值稱為成員變數。結構的每個成員可以是不同型別的變數。

自己建立結構體型別

結構的成員可以是標量、陣列、指標,甚至是其他結構體。

struct結構體名

{成員表列}:↓

注意:結構體型別的名字由一個關鍵字struct和結構體名組合而成的(例如structStudent)結構體名是由使用者指定的,又稱"結構體標記"(structuretag),以區別於其他結構體型別。上面的結構體宣告中Student就是結構體名(結構體標記)

型別名成員名:

"成員表列"也稱為"域表",每一個成員是結構體中的一個域。成員名命名規則與變數名相同

宣告結構體的形式

上一篇:OPPO靜靜上架... 下一篇:信用卡到期換...
猜你喜歡
熱門閱讀
同類推薦