初學位段和聯合的知識

2021-09-01 16:09:51 字數 1455 閱讀 6917

位段(成員必須是整型) char也屬於整型家族

struct s

;int main()

位段的記憶體分配

1.位段的成員可以是int,unsigned int或者signed int或者是char(屬於整型家族)型別

2.位段的空間上是需要以4個位元組(int)或者1個位元組(char)的方式來開闢的

3.位段涉及很多不確定因素,位段是不跨平台的,注重可移植的程式應該避免使用位段

struct s

;int main()

; //very important!!!

//printf("%d\n", sizeof(struct s));//3

s.a = 10;

s.b = 12;

s.c = 3;

s.d = 4;

return 0;

}

enum day

;int main()

1.為什麼要用列舉替換#define

(1)增加**的可讀性和可維護性

(2)和#define定義的識別符號比較列舉有型別檢查,更加嚴謹

(3)防止了命名汙染

(4)便於除錯,#define不可除錯

(6)使用方便,一次可以定義多個常量

union un

;int main()

; printf("%d\n", sizeof(union un));//8

printf("%p\n", &(u.c));

printf("%p\n", &(u.i));

printf("%p\n", &(u.d));

return 0;

}

int check_sys()

int main()

else

printf("大端");

return 0;

}

int check_sys()

u; u.i = 1;

**//返回1,小端

//返回0,大端**

return u.c;//**取出第乙個位元組,類似於普通方法**

}int main()

else

return 0;

}

union un

;union un2

;int main()

(1)聯合存在對齊

(2)聯合的大小至少是最大成員的大小

(3)當最大成員不是最大對齊數的整數倍時,就要對齊到最大對齊數的整數倍處

C語言結構體 聯合 位段和列舉知識總結

一 結構體 概述 簡單來說結構體就是一些值的集合,這些值是它的成員,只不過各個成員可能具有不同的型別。結構體的宣告 一種不完全宣告,一種採用重新命名typedef,再就是標準命名。不完全宣告 不宣告結構體的tag 就是匿名宣告。重新命名 將struct student重新命名為student。標準命...

結構體的基礎知識,位段,聯合 列舉

結構體屬於聚合資料型別,c語言提供了兩種聚合資料型別,陣列和結構體。陣列裡面儲存的是同型別的元素的集合,它的每個元素是通過下標引用或者指標間接訪問來選擇的。結構也是一些值的集合,這些值稱為它的成員,但乙個結構的各個成員可能具有不同的型別,他們需要通過名字去訪問,那個成員都有自己的名字。1.結構宣告 ...

text段 data段和bss段知識介紹

一 總體概述 1 bss 可讀可寫 bss是英文block started by symbol的簡稱,通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域,在程式載入時由核心清0。bss段屬於靜態記憶體分配。它的初始值也是由使用者自己定義的連線定位檔案所確定,使用者應該將它定義在可讀寫的ram...