結構體
1. 結構體的建立
(1)在構建結構體之前,必須要對結構體進行宣告。
例:struct student //描述乙個學生,student為標籤
; //此處的分號不能丟,此處也可寫變數
(2)成員訪問
2.1在(
1)中的
struct student{}
;相當於型別,比如
int型,
struct student s ;//s為變數
s中有name,age,***,
三個成員;
在訪問成員是為(s.成員)的形式:例:
s.age:
訪問的是
age成員
2.2而如果需要訪問指標指向的結構體變數時,應該解引用指標,這樣就會獲得指標指向的內容。
例:p為指向結構體變數的指標
struct student *p=s;
(*p).name (p->name)
//訪問成員,兩種形式都可以
(3)初始化
例:(1)struct student n1=;//
先宣告了結構體,然後賦值
(2)struct studentn2=;//在宣告時就定義變數然後初始化。
2. 結構體的記憶體對齊
在結構體中宣告成員時,成員在記憶體中存放時要遵循記憶體對齊的原則:平台原因和效能原因。
(1)struct s1 ;
(2)struct s2;
總結:(1)對齊數:編譯器預設的和該成員大小的較小值
visual環境為8,
linux為4
。 (2)總大小為成員中最大對齊數的整數倍。
(3)除了第乙個,後乙個成員之前的都為自己對齊數的整數倍。
(4)結構體的對齊數為成員中的最大對齊數。
3.結構體傳參
struct student s;
int main()
;
8個位元組,兩個整型
注意:成員必須是int ,unsigned int 和
signed int
,char
整型族
2.位段也需要注意記憶體對齊
struct s
char a : 3;//3個位元位
char b : 4;//4個位元位,共7個,佔乙個位元組
char c : 5;//5個位元位,乙個位元組
char d : 4;//4個位元位,乙個位元組
int e : 4;//前邊共三個,補充乙個,加上4,一共8個
列舉enum day//列舉型別
mon=1,
tue=2,
wed=3,
sun=7,
}c1;
enum day c1=sun;//只能拿列舉常量賦值
不可以直接賦值
:c1=7;
聯合(共用體)
聯合體的特點:至少要儲存最大的成員
union un
short c[7];//大小為7,對齊到4 的整數倍12 處
int i;//加上4,為16
結構體 聯合 列舉
一般的,在宣告乙個結構提示要使用struct關鍵字,例如 建立乙個學生 struct stu char name 20 名字 int age 年齡 char 5 性別 char id 20 學號 分號不能丟結構體得特殊宣告 沒有結構體名 structx 沒有結構體的標籤,就不能在結構體建立完成之後再...
結構體,列舉,聯合。
今天我們來學習一下結構體,列舉以及聯合等知識。一。首先從結構體開始,結構體與陣列一樣都是聚合型別。1.結構體的宣告 struct tag variable list tag 1 可以省略 2 見名思意 3 盡量不省略。member list 不能為空。variable list 可以省略。例如 描述...
結構體列舉與聯合
基本介紹 struct是結構體的關鍵字,它將一些相關聯的資料打包成乙個整體,這些相關聯的資料可以是不同的型別。它們被稱為結構體的成員,結構體的成員可以是標量 陣列 指標 或者是其他結構體。結構的宣告 假設我們要建立學生檔案,要納入學生的姓名,年齡和性別三個內容。那麼我們可以通過建立乙個結構體來實現這...