struct student
stu1,stu2,stu3;
int main()
匿名結構體
struct
stu1;
struct
*ps;
int main()
struct node
;int main()
typedef struct node
node;
int main()
#include//offsetof的標頭檔案
struct s1
;//struct s2
//;struct s3
;struct s4
;int main()
; //rintf("%d\n", offsetof(struct s2, c1));//0 offsetof代表 相對於起始位置的偏移量
//printf("%d\n", offsetof(struct s2, c2));//1
//printf("%d\n", offsetof(struct s2, i));//4
//struct s1 s1 = ;
//struct s2 s2 = ;
//printf("%d\n", sizeof(struct s1));//12 //兩種列印方式都一樣
//printf("%d\n", sizeof(s1));
//printf("%d\n", sizeof(struct s2));//8
//printf("%d\n", sizeof(s2));
system("pause");
return 0;
}
結構體內存對齊的規則 要牢牢掌握
1.第乙個成員永遠都放在結構體起始位置的0偏移處
2.從第二個成員開始,每個成員都放在某個對齊數的整數倍的偏移處
這個對齊數:成員自身的大小和預設對齊數的較小值
預設對齊數:
vs環境下:8 linux gcc:4
3.結構體的總大小必須是所有成員對齊數中最大對齊數的整數倍
4.如果結構體中巢狀結構體,
巢狀結構體要對齊到自身最大對齊數的整數倍,
結構體的總大小是所有對齊數(包含巢狀結構的對齊數)中最大對齊數的整數倍
對其原因:提高效率
節省空間的方法:把小的放在一起
#pragma pack(4)//將預設對齊數改為4
struct s
;#pragma pack()//沒寫數字代表修改取消
int main()
//#pragma pack(1) 代表沒有對齊,0偏移量
結構體傳參(傳位址)(傳結構體) 結構體知識總結
struct b關於結構體,我們一定不會陌生,結構體可以說和類的用法類似,但是也有不同之處,總的來說,結構體的使用使我們可以更加方便的儲存和使用資料。我在上面就定義了乙個結構體,裡面有兩個元素,乙個是int型別的,乙個是char型別的,因此,結構體裡面可以放進去不同型別的資料,這跟結構體的空間開闢有...
結構體相關知識總結
結構體傳參 1.結構體的簡單認識 struct s int main 這是乙個最簡單的結構體傳參,先定義結構體 struct s 然後在主函式中賦值,列印。2結構體進行傳參 傳值和傳址的區別 以下有幾種不同的情況 一.struct s void init struct s tmp intmain i...
結構體知識點總結
對於結構體的知識點,我主要分為以下幾點來講解 結構體的宣告 結構體型別的建立 結構體成員的訪問 結構體的初始化 結構體內存對齊 位段。1.結構體的宣告 struct stu 分號不能丟2.結構體型別的建立 有兩種建立的方法,第一種 struct stu struct stu s1 定義了乙個結構體變...