struct
union
enum
typedef
各種資料型別的集合(打包封裝)
struct personmyson;
person是乙個新的型別,不是乙個變數名,
相當與
struct person;
struct person myson;
1.整體空間是占用空間的最大成員(的型別)所佔位元組數的整數倍。2.資料對齊原則:記憶體按結構體成員的先後順序排列,當排到該成員時,其前面已擺放的空間大小必須是該成員型別大小的整數倍,如果不夠補齊,依次向後類推。例子:32位,char乙個位元組,int四個位元組,double 8個位元組
int main()
; printf("int佔%d個位元組\n",sizeof(int));
printf("double佔%d個位元組\n", sizeof(double));
printf("char佔%d個位元組\n", sizeof(char));
printf("結構體my佔%d個位元組\n", sizeof(my));
具體分析: char a;
1 a佔乙個位元組,結構體第一成員的起始位址是0,也就是被a佔據。
2 ddouble b ,8個位元組 資料對齊原則:其前面已擺放的空間大小必須是該成員型別大小的整數倍,如果不夠補齊,
因為a的空間大小是1,b是8 ,因此,不夠補齊,在補7個,現在成為 8+8=16個
3 int c,4個位元組,16是4的整數倍,直接加16+4=20
4 char d ,1個位元組,20是1的整數倍。20+1=21
整體空間是占用空間的最大成員(的型別)所佔位元組數的整數倍。
最大成員型別為8位元組,比21要大,因此是3*8=24
在union中所有的資料成員共用乙個空間,同一時間只能儲存乙個資料成員,所有的資料成員具有相同的起始位址。並且所需空間大小只取決於最大元素的型別, 所以聯合體的好處是能節省記憶體空間。對於一些資料不能再同一時間同時被用到,則可以考慮用union。
enum weekday;
定義變數為列舉型別:
enum weekday day;
或者
enum weekday day;
其中,花括號裡為 列舉元素 是常量,不是變數,不能給其賦值,他們是有值的。按順序的
與#define 挺像的,定義自己習慣的資料型別名稱,來替代系統預設的基本型別名稱、陣列型別名稱、指標型別名稱與使用者自定義的結構型名稱、共用型名稱、列舉型名稱等。
c語言中關鍵字
static 修飾區域性變數,改變變數的生命週期和儲存空間,但是不改變作用域,仍然是乙個區域性變數,作用域僅限於該 修飾全域性變數,改變變數的作用域只能在當前檔案訪問,不能在其他檔案訪問 修飾函式,改變函式的作用域,函式只能在本檔案中被呼叫,不能在其他檔案被呼叫。extern 可以修飾變數和函式,表...
C語言中的關鍵字
register 作用 請求編譯器盡可能地將變數存在cpu記憶體暫存器中。而不是通過記憶體定址訪問的 方法,好處 省去了cpu處理訪問記憶體資料的時間。注意事項 1,register修飾變數的型別必須是cpu能夠接受,register變數 必須是乙個單個的值,並 且長度應該小於或者等於整型的長度,2...
C語言中的關鍵字!
今天總結一下c中的關鍵字 資料型別關鍵字 12個 1 char 宣告字元型變數或函式 2 double 宣告雙精度變數或函式 3 enum 宣告列舉型別 4 float 宣告浮點型變數或函式 5 int 宣告整型變數或函式 6 long 宣告長整型變數或函式 7 short 宣告短整型變數或函式 8...