共用體變數定義:
union 共用體名
變數表列;
特點:1.同乙個記憶體段可以用來存放幾種不同型別的成員 ,但在每一瞬間只能存放其中一種,而不是同時存放幾種。共用體變數中起作用的是最後一次存放的成員。共用體變數的位址和它各個成員的位址都是同一位址。
2.不能對共用體變數名賦值,不能引用變數名來得到乙個值,不能在定義共用體變數時對它初始化。
3.不能把共用體變數作為函式引數,也不能是函式帶回共用體變數,但可以使用共用體變數的指標。(與結構體變數這種用法相仿)。
4.共用體型別可以出現在結構體型別定義中,也可以定義共用體陣列。反之,結構體也可以出現在共用體中,陣列也可以作為共用體的成員。
列舉體:
宣告列舉體:enum weekday;
宣告了乙個列舉型別enum weekday,可以用此型別來定義變數:enum weekday workday,week-end;
workday,week-end 的值只能是列表中的乙個(sun-sat)。
說明:1.c編譯中,對列舉元素按常理處理,故稱列舉常量,不能對它們賦值。
2.列舉元素作為常量,它們是有值的,預設為0,1,2,3....。列舉元素的值也可在定義時由程式設計師制定。
3.列舉值可以用來作判斷比較。如:if(workday==mon)..... if(workday>sun)....。乙個整數不能直接賦給乙個列舉變數。
workday=(enum weekday)2;
用tyedef定義已有型別的別名:
int *p; //p是型別為int *型的變數
typedef int *p; //
p 是資料型別名(typedef-name),是int *p中p的資料型別int *
int num[100]; //
num是資料型別為 int[100]的變數
typedef int num[100]; //
num是含有100個元素的陣列型別的typedef-name,例如 int a[100];num b=a;
typedef int (*num)[100];//
int a[100]; num b=&a;
int *func(int); //
func的型別是函式識別符號,返回值型別int*,引數為int
typedef int *func(int); //
func是函式型別的typedef-name,該函式返回值為int*,引數為int。func *fptr; (fptr則是函式指標)
typedef int (*func)(int) //
func是指向函式的指標的資料型別名。func fptr;(fptr則是函式指標)
typedef structdata; //
data birthday;
typedef struct
student stud;
typedef
long
duble real;
//定義與平台無關的資料型別,用real定義乙個浮點數,有些平台支援long duble,而有的平台不支援,則只需修改這裡即可。提高了可移植性
說明:1.習慣上常把用typedef宣告的型別名用大寫字母表示。
2.typedef與#define:#define是在預編譯是處理的,它只能做字元替換,而typedef是在編譯時處理的,不是做簡單的替換。
3.當不同 原始檔中用到同一型別資料(尤其像陣列,結構體,共用體,等)時,常用typedef宣告一些資料型別,把他們單獨放在乙個檔案中,然後在需要用到它們的檔案中把他們包含進來。
4.使用typedef有利於程式的通用與移植。
較複雜的原型宣告:
void (*b[10]) (void (*)());
變數名為b,先替換右邊部分括號裡的,pfunparam為別名一:
typedef void (*pfunparam)();
再替換左邊的變數b,pfunx為別名二:
typedef void (*pfunx)(pfunparam);
原宣告的最簡化版:
pfunx b[10];
結構體,共用體,列舉體,typedef
概念 結構體時一種構造資料型別 用途 把不同型別的資料組合成乙個整體 記憶體 各成員所佔記憶體空間的累加 一.結構體的宣告與定義變數的方法一共有三種 1.常規定義 struct aa 注意大括號後面有分號 變數定義 struct 機構體名 結構體變數名錶 如 struct aa aa,bb 前面的s...
結構體 共用體和列舉
1 c 中存在typedef使用方法如下 在程式之前typedef struct node 之後使用此結構體可以直接定義 node a,b 如果無typedef 應這樣定義 struct node a,b 不能省略struct 2 在此宣告結構體的定義方法 struct 名稱 struct 名稱 a...
列舉 共用體 typedef與巨集定義
c 語言列舉型別 實際問題中,有些變數的取值被限制在一定範圍內。例如,乙個星期內只有七天,一年 只有十二個月,乙個班每週有六門課程等。c 語言提供了一種列舉 enum 型別,可以列出所有可能的取值。定義形式為 enum 變數名 這些值也稱為列舉元素。注意最後的分號 不能少。例如,列出乙個星期有幾天 ...