結構體是組織數據結構的方式,它類似於類,但是不同於類,主要用於組織數據與數據之間的結構
與類的區別
聲明結構體的方式和聲明類的方式大致相同,其區別如下
- 使用關鍵字 struct 而不是關鍵字 class。
- 儘管結構體可以包含成員函數,但它們很少這樣做。所以,通常情況下結構體聲明只會聲明成員變量。
- 結構體聲明通常不包括 public 或 private 的訪問修飾符。
- 類成員默認情況是私有的,而結構體的成員則默認爲 public。程序員通常希望它們保持公開,只需使用默認值即可。
struct Package {
int ctLength=0; // 內容長度
char* token=""; // token值
Package(){
// 這裏我們可以通過構造函數的方式初始化 這個結構體,但是也不提倡這樣做,因爲結構體儘量不要有除變量成員以外的東西
}
// private int demo1; 甚至可以有私有成員,但通常不這樣做
// void convert(){} 也可以有函數作爲成員,但通常也不這樣做
// ..... 還可以有很多
}; // 最後這個分號一定要有
內存分佈圖
創建結構體實例
Package p1,p2,p3; // 這裏創建了數據類型爲Package的實例p1,p2,p3
訪問成員
p1.ctLength; // 訪問ctLength成員變量
p1.token; // 訪問token成員變量
嵌套結構體
在一個結構體中某個成員的數據類型可以是另一個結構體,其內存模型是所有結構體的成員之和
struct S1{
char *name;
int age;
}; // 這裏聲明瞭S1結構體
struct S2{
int id;
S1 *s1; // 這裏我們聲明瞭S2結構體中包含有指向S1變量的成員指針
}; // 這裏聲明瞭S2結構體