結構體
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語句都是在迴圈前先判斷條件,只有條件滿足才會進入迴圈。...