C和指標(7)結構和聯合

2021-06-27 06:03:51 字數 847 閱讀 3215

第10章

(1)聚合資料型別能夠同時儲存超過乙個的單獨資料。c提供了兩種型別的聚合資料型別,陣列和結構。陣列是相同型別的元素的集合,它的每個元素是通過下標引用或指標間接訪問來選擇的(因為陣列的元素長度相同)。

(2)結構也是一些值得的集合,這些值稱為它的成員,但乙個結構的各個成員可能長度不同,故不能使用下標來訪問它們。相反,每個結構都有自己的名字,它們是通過名字訪問的。

(3)結構變數和屬於標量型別,可以像對待其他標量型別那樣執行相同型別的操作。結構也可以作為傳遞給函式的引數,它們也以作為返回值從函式返回,相同型別的結構變數相互之間可以賦值。

(4)結構宣告:必須列出它包含的所有成員。這個列表包括每個成員的型別和名字。struct

tagvariable-list;//所有可選部分不能全部省略——至少出現兩個。

(5)結構變數的成員是通過點操作符(.)訪問的。點操作符接受兩個運算元,做運算元是結構變數的名字,有運算元就是需要訪問的成員的名字。這個表示式的結果就是指定的成員。

(6)下表引用和點操作符具有相同的優先順序,他們的結合性都是從左至右。而點操作符的優先順序是高於間接訪問操作符的。

(7)箭頭操作符->和 點操作符一樣,接受兩個運算元,但左運算元必須是乙個指向結構的指標。箭頭操作符對左運算元執行間接訪問取得指標所指向的結構,然後和點操作符一樣,根據右運算元選擇乙個指定的結構成員。由於間接訪問操作內置於箭頭操作符中,所以我們不需要顯式地執行間接訪問操作或使用括號。箭頭操作符的優先順序高於&操作符的優先順序。

(8)對乙個null指標進行間接訪問操作是個錯誤。

(9)聯合的宣告和結構類似,但它的行為方式卻和結構不同。聯合的所有成員引用的是記憶體中的相同的位置。當想在不同的時刻把不同的東西儲存於同乙個位置時,就可以使用聯合。

C和指標詳解 結構和聯合

結構的自引用struct self這種自引用是非法的。因為成員b是另乙個完整的結構體,其內部還將包含它自己的成員b。這樣永無止境的重複下去。struct self這樣就是合法的了。作為函式引數的結構 雖然將乙個結構變數作為引數是合法的,但是這樣往往並不適宜。傳遞乙個結構體。它的效率很低,因為在c語言...

《C和指標》筆記(十二) 結構和聯合

qq 1841545843 郵箱 jiaxx903 163.com 宣告結構體使用typegef建立一種新的型別 struct typedef struct 這個和宣告乙個標籤的作用相同。區別在於現在 為乙個型別而非乙個標籤。2.結構體的自引用 struct self ref 現在b是乙個指標,而不...

C和指標 第10章 結構和聯合

1.結構 struct x struct y 20 z 警告 以上兩個宣告被編譯器當做兩個截然不同的型別。即y和z為同一型別,但與x型別不用。使用結構標籤宣告結構 struct 此時 是結構標籤,使用標籤建立需要如下 struct x struct y 20 z 使用typedef定義乙個新型別 t...