結構體也屬於構造類型.結構體比數組更加靈活,能夠存放不一樣類型的變量數組
結構體是由若干組成員組成的,成員既能夠是基本數據類型.又能夠是構造類型,好比數組ide
結構體屬於自定義數據類型spa
1.結構體聲明:內存
struct 結構體名it
{class
類型說明符 成員名;變量
…;技巧
類型說明符 成員名;數據類型
}; //注意此處分號不能少.數據
結構體是自定義類型,結構體變量是由結構體類型修飾的變量.
定義結構體變量
struct 結構體名 變量名 = {初值} ;
結構體成員訪問
結構體成員的表示形式
結構體變量,成員
typedef爲現有的類型建立一個新的名字,或稱爲類型別名
typedef 原類型 新類型
typedef int integer
這樣
int a = 10;
能夠寫成:
integer a = 10;
結構體變量能夠直接賦值
注意
雖然數組和結構體都屬於構造類型,可是結構體變量能直接賦值,數組不能直接賦值
小技巧:
能夠經過把數組放在結構體內實現數組的直接賦值
結構體內存佔用:
結構體所佔的空間能夠簡單的認爲是各個成員所佔內存的空間之和
其實是最大成員變量所佔空間的最小整數倍
當數組這種構造類型的數據總體所佔的字節數大於結構體成員變量中最大的數據類型所佔的字節時,數組就會拆分對齊
計算機中內存對齊原則的本質就是爲了CPU可以有效的經過地址訪問相關內存.
結構體嵌套
結構體的成員仍然能夠是結構體
結構體數組
能夠將多個結構體變量放到數組中,構成結構體數組.
例如: struct stu students[10]
能夠經過下標能夠訪問每一個結構體變量