自定義型別

2021-09-29 13:55:16 字數 1123 閱讀 7086

結構體的宣告

結構的基礎知識

結構是一些值的集合,這些值稱為成員變數。結構的每個成員可以是不同型別的變數。

結構的宣告

struct tag

variable-list;

以描述學生為例:

struct stu

;

特殊的宣告:

//匿名結構體型別

struct

x;struct

a[20], *p;

p = &x;該**是錯誤的,因為編譯器會把上面的兩個宣告當成完全不同的兩個型別。

結構的自引用

struct node

;

結構體變數的定義和初始化
struct point

p1; //宣告型別的同時定義變數p1

struct point p2; //定義結構體變數p2

//初始化:定義變數的同時賦初值。

struct point p3 = ;

struct stu //型別宣告

;struct stu s = ;//初始化

struct node

n1 = , null}; //結構體巢狀初始化

struct node n2 = , null};//結構體巢狀初始化

結構體內存對齊

結構體內存對齊

結構體傳參

struct s

;//結構體傳參

void print1(struct s tmp);}

//結構體位址傳參

void print2(const struct s* ps)

int main()

; print1(s);//zj 20

print2(&s);//zj 20

return 0;

}

print2更好一些。

原因:函式傳參的時候,引數是需要壓棧,會有時間和空間上的系統開銷。

如果傳遞乙個結構體物件的時候,結構體過大,引數壓棧的的系統開銷比較大,所以會導致效能的下降。

自定義型別

typedef型別 typedef 已有型別 新建型別 示例 typedef double area,volume typedef int number number i1 area a enum enum 列舉型別名 enum week 預設sun 0,可以比較 如果修改必須形如enum week...

自定義型別

下面列舉幾種c語言中常用的自定義資料型別 1.結構體型別 當描述乙個整型變數時,可以用int,描述字元型變數時,可以用char,但要描述乙個學生時,因為這個學生包含的資訊很多,比如姓名,性別,年齡等,不能通過單一的型別來描述,所以,這裡引入結構體型別,將某個事物的共有屬性集合在一起,宣告乙個結構體型...

自定義型別

列舉從字面意思理解就是將可能取的值一一枚舉出來,列舉型別沒有成員 可言,裡邊存放的是可能取值。列舉型別的定義 enum day enum color printf d n red printf d n green printf d n blue 執行結果 day和color都是定義的列舉型別,中的內...