結構體的宣告
結構的基礎知識
結構是一些值的集合,這些值稱為成員變數。結構的每個成員可以是不同型別的變數。
結構的宣告
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都是定義的列舉型別,中的內...