結構體學習心得

2021-07-12 05:30:17 字數 2399 閱讀 7068

結構體

1.簡單認識結構體

#include

/*struct tag(member list)(varible list)*/

成員列表     變數列表

struct stu

char name[20];

int age;

char ***[5];

char tele[12];

char addr[30]; 

int main()

struct stu stu2;

struct stu arr[10];

return 0;

2.結構體的重新命名

①.typedef struct stu stu;

/*將結構體struct stu改為stu,便於後面的書寫*/

②.typadef stu* pstu;

/*重新命名乙個結構體指標*/

3.結構體成員的訪問

訪問結構體成員的時候要用到結構體操作符「.」和「->」。

①直接訪問(".")

int main()

stu stu;

strcpy(stu.name,「bit」);

/*將字串「bit」放到陣列arr中去,不可用直接賦值的方式,因為stu.name為乙個位址常量*/

stu.name=20;

printf(「name=%s\n」,stu.name);

printf("age=%d\n",stu.age);

return 0;

②間接訪問(「->」)

int main()

stu stu;

stu pstu=&stu;

strcpy((*pstu),"bit");

(*pstu).age=20;

return 0;

4.需要注意的

①.結構體的自引用

例:#include

struct a

char name[20];

int age;

struct a sa;

/*以上是一種錯誤的寫法,不可直接對結構體進行自引用*/

改進方法:

#inlcude

struct a

char name[20];

int age;

struct a* pa;

int main()

struct a  sa1;

struct a  sa2;

struct a  sa3;

sa1.pa=&sa2;

sa2.pa=&sa3;

sa3.pa=null;

return 0;

/*通過指標的解引用訪問到結構體,從而進行自引用*/

②.對結構體進行重新命名的時候最好不要使用匿名

struct a

char name[20];

int age;

struct a  *pa;

}a;③.不完全宣告

struct b;

struct a

struct b *b;

/*在進行結構體巢狀引用時,如果巢狀結構體未經過宣告,則需要在前面不完全宣告*/

5.結構體初始化

int main ()

struct stu stu=;

printf("%s\n".stu.name);

return 0;

6.結構體內存分配

①.預設的對齊數是8

②.linux預設的對齊數是4

③.結構體的總大小是成員最大型別所佔位元組的整數倍

④.當兩個結構體巢狀時,結構體的大小,巢狀結構體對齊到自己最大對齊數的整數處

⑤.每個結構體成員所分配的大小(對齊數)取本身大小與預設大小的較小值

⑥.在設計結構體成員順序時,遵循將所佔位元組小的變數集中在一起的原則,可以節省記憶體空間。

⑦.當結構體作為函式引數的時候,傳址的方式優於傳值的方式

例1:#include

struct s

int a;  

char c;

double d;

struct  s2

int a;

double d;

char c;

struct s ss;

此時struct c的大小為40個位元組

例2:struct  s

int a;//第乙個成員變數放在0偏移處  4  8 取4

char  c;//1 8 取1

double d;//8 8 取8

本文出自 「福大馨」 部落格,請務必保留此出處

學習心得 python學習心得

自從來了深圳工作以後,尤其是屢屢面試碰壁以後。發現其實自己的知識面很窄,做筆試題的時候絞盡腦汁還是漏洞百出,並不是不會做,而是出現一大堆不該有的失誤。每次被問道,對資料庫了解嗎?說一大堆看起來很高階的東西 好啊,那我們寫幾個sql語句吧。馬上完蛋了,沒了手冊關鍵字都記不起。了解哪幾種指令碼語言,sh...

學習心得 我的學習心得

我是乙個已經步入中年的70後,離開校園已經20年了,因為當年的政策因素而未能圓我的大學夢,在20年的工作過程中總是因為缺少一張大學文憑而失去了很多機會,曾經也考慮過自考,但是乙個人去面對的時候總感覺心有餘而力不足。2018年3月份偶然讓我認識了尚德,原來自考還可以這樣學習。一直懷疑自己年紀大了記憶力...

迴圈結構程式設計學習心得

迴圈結構的一些知識點 1 明確了迴圈條件和迴圈體,選擇while語句實現迴圈。2 迴圈結構四要素 迴圈初始化,迴圈條件,迴圈體,迴圈變數修改。3 可以把for語句改寫成while語句,for語句和while語句都能實現迴圈。for語句和while語句都是在迴圈前先判斷條件,只有條件滿足才會進入迴圈。...