C語言 結構體 聯合體 列舉 typedef

2021-10-06 20:12:03 字數 4321 閱讀 7437

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 ...