結構體也屬於構造類型.結構體比數組更加靈活,可以存放不同類型的變量
結構體是由若干組成員組成的,成員既可以是基本數據類型.又可以是構造類型,比如數組
結構體屬於自定義數據類型
1.結構體聲明:
struct 結構體名
{
類型說明符 成員名;
…;
類型說明符 成員名;
}; //注意此處分號不能少.
結構體是自定義類型,結構體變量是由結構體類型修飾的變量.
定義結構體變量
struct 結構體名 變量名 = {初值} ;
結構體成員訪問
結構體成員的表示形式
結構體變量,成員
typedef為現有的類型創建一個新的名字,或稱為類型別名
typedef 原類型 新類型
typedef int integer
這樣
int a = 10;
可以寫成:
integer a = 10;
結構體變量可以直接賦值
注意
雖然數組和結構體都屬於構造類型,但是結構體變量能直接賦值,數組不能直接賦值
小技巧:
可以通過把數組放在結構體內實現數組的直接賦值
結構體內存占用:
結構體所占的空間可以簡單的認為是各個成員所占內存的空間之和
實際上是最大成員變量所占空間的最小整數倍
當數組這種構造類型的數據整體所占的字節數大於結構體成員變量中最大的數據類型所占的字節時,數組就會拆分對齊
計算機中內存對齊原則的本質就是為了CPU能夠有效的通過地址訪問相關內存.
結構體嵌套
結構體的成員仍然可以是結構體
結構體數組
可以將多個結構體變量放到數組中,構成結構體數組.
例如: struct stu students[10]
可以通過下標可以訪問每個結構體變量
C++ Primer Plus 第6版 中文版 清晰有書簽PDF+源代碼 http://www.linuxidc.com/Linux/2014-05/101227.htm
讀C++ Primer 之構造函數陷阱 http://www.linuxidc.com/Linux/2011-08/40176.htm
讀C++ Primer 之智能指針 http://www.linuxidc.com/Linux/2011-08/40177.htm
讀C++ Primer 之句柄類 http://www.linuxidc.com/Linux/2011-08/40175.htm
將C語言梳理一下,分布在以下10個章節中: