2 聯合體/共用體
3. 列舉型別
4 typedef
#define _crt_secure_no_warnings
#include
#include
#include
#include
#include
//struct 結構體名
//struct student
;//stu = ;
intmain0201()
; struct student st1;
memset(st1, 0, sizeof(st1));*/
struct student stu =
;printf
("姓名:%s\n"
, stu.name)
;printf
("年齡:%d\n"
, stu.age)
;printf
("成績:%d\n"
, stu.score)
;printf
(, stu.addr)
;return exit_success;
}int
main0203
(void
)
結構體成員記憶體是矩形的
}執行發生錯誤:
結構作引數應該使用引用傳遞,盡量使用指標,這樣**效率高
#include
#include
#include
#pragma warning(disable:4996)
struct student
;void
print_students
(struct student *s)
//一般來講,不要把結構變數作為函式的引數傳遞
void
set_students
(struct student *s,
const
*name,
int age)
intmain
(void);
set_students
(&st,
"mike"
,100);
print_students
(&st)
;return0;
}
聯合union是乙個能在同乙個儲存空間儲存不同型別資料的型別。
聯合體所佔的記憶體長度等於其最長成員的長度,也叫做共用體。
聯合體雖然可以又多個成員,但同一時間只能存放其中一種
如果聯合體中又指標成員、那麼一定要使用完這個指標,並且free指標之後才能用
可以使用列舉(enumerated type)宣告代表整數常量的符號名稱,關鍵字enum建立乙個新的列舉型別。實際上,enum常量是int型別的。
#include
//#define red 0
//#define black 1
//#define yellow 2
//相當於列舉
//列舉是常量,常量是不能修改的,但是可以在列舉宣告時修改
列舉根據前乙個值往後排,預設第乙個為0。如果宣告其中乙個為0,則它前乙個也為0.
#include
//#define red 0
//#define black 1
//#define yellow 2
//相當於列舉
//相當於列舉
//相當於列舉
enum a
;int
main
(void
)
typedef是一種高階資料特性,能使某一型別建立自己的名字
typedef與#define不同點
typedet僅限於資料型別,而不能是表示式或具體的值
typedef是編譯器處理的(定義新的資料型別),而不是預編譯處理(#define是預編譯處理,進行簡單的文字替換)
typedef比#define更靈活
#include
typedef
char byte;
//定義了乙個新的資料型別,名字叫byte,型別為char
struct abc
;typedef
struct abc a;
//將a定義為結構體abc
//簡化版本:
typedef
struct a1
a2;typedef
struct
a3;int
main
(void
)
typedef 返回型別(
*新型別)
(參數列)
#include
typedef
char byte;
//定義了乙個新的資料型別,名字叫byte,型別為char
struct abc
;typedef
struct abc a;
//將a定義為結構體abc
//簡化版本:
typedef
struct a1
a2;typedef
struct
a3;int
main40
(void
)char
*mystrcat
(char
*s1,
char
*s2)
char
*test
(char*(
*p)(
char*,
char*)
,char
* s1,
char
* s2)
intmain
(void
)
typedef
char*(
*strcat)
(char*,
char*)
;char
*test
(strcat p,
char
* s1,
char
* s2)
stract array[10]
;//定義函式陣列
結構體 聯合體 列舉
1 結構體struct 結構體的作用 在網路協議 通訊控制 嵌入式系統的c c 程式設計中,我們要傳送的不是簡單的位元組流 char型陣列 二是多種資料組合起來的乙個整體,其表現形式是乙個結構體。使用struct的注意事項 1 下面看乙個題目 結果 6 12 這裡涉及到結構體的記憶體對齊方式。1 關...
結構體 聯合體 列舉
結構體 1.宣告乙個結構體型別的一般形式為 struct 結構體名 成員表列 如 struct student 表示可選項 注 宣告不是定義,故不可對成員列表中的成員進行初始化。定義別名 方法一 如 struct 結構體名 typedef struct 結構體名 別名 方法二 如 typedef s...
C語言結構體 列舉 巨集 聯合體
列舉常量與巨集的區別 聯合體和結構體區別 c和c 結構體區別 這篇文章很詳細,值得一看c語言結構體型別的定義和使用 關於結構體對齊問題請閱讀 結構體對齊規則及舉例 系統指定型別的大小與系統有關,這裡取 資料型別 位元組char 1float 4double 8long double 16short ...