第10章,結構和聯(lián)合

結構基礎知識

C提供了兩種類型的聚合數(shù)據類型,數(shù)組和結構。數(shù)組是相同類型的元素的集合,但每個結構的成員可以具有不同的類型;

數(shù)組元素通過下標訪問,每個結構成員都是通過成員名字訪問的;

和數(shù)組名不同,當一個結構變量在表達式中使用時,它并不被替換成一個指針;

相同類型的結構體相互之間可以進行賦值;

1、結構聲明

結構成員

機構里的成員可以支持任意類型。

結構成員的訪問當變量為結構體本身時,為直接訪問用變量名.加成員名;

當變量為機構體的指針時,為簡介訪問,方式為變量名->成員名。

結構的自引用

結構的自引用,不是在結構體里還包含結構體本身類型的成員變量(這個遞歸定義是不可以的),而是在結構體里包含其結構體本身的指針變量。

不完整的聲明

結構的初始化

結構的初始化和多維數(shù)組帶花括號的初始化很相似,一個位于一對花括號內部,由逗號分隔的初始值列表可用于結構各個成員的初始化。如果初始列表的值不夠,剩余的結構成員將使用缺省值進行初始化。

struct INIT_EX{

int ? ? ?a;

short ?b[10];

Simple c;

}={

10,

{1,2,3,4,5},

(25,'x',1.9}

};

結構、指針和成員

相互之間的訪問方式就不詳細說了

結構的存儲分配

其中存在對齊要求。為了節(jié)省空間,我們可以通過對機構成員重排,但這也許會減少程序的可讀性。空間和可讀性需要我們自己平衡(可讀性差的時候只能通過加注釋來解決了)。

作為函數(shù)參數(shù)的結構

結構體變量是一個標量,我們可以直接使用按值傳遞傳遞這個變量。但如果一個結構體過大,我們就必須把相應的字節(jié)全部復制到堆棧中,以后再丟棄。這樣實在是沒必要,因此我們一般傳遞結構的指針;

向函數(shù)傳遞指針的缺陷在于函數(shù)現(xiàn)在可以對調用程序的結構變量進行修改。如果我們不希望如此,可以在函數(shù)中使用const關鍵字修飾。

位段

位段可以實現(xiàn)的功能都可以通過移位和屏蔽來實現(xiàn),只不過位段使用起來更明了些,但位段可移植性很差。

聯(lián)合

在一個成員長度不同的聯(lián)合里,分配給聯(lián)合的內存數(shù)量取決于它的最長成員的長度。

聯(lián)合的初始化

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,692評論 1 51
  • 指針是C語言中廣泛使用的一種數(shù)據類型。 運用指針編程是C語言最主要的風格之一。利用指針變量可以表示各種數(shù)據結構; ...
    朱森閱讀 3,619評論 3 44
  • 1.面向對象的程序設計思想是什么? 答:把數(shù)據結構和對數(shù)據結構進行操作的方法封裝形成一個個的對象。 2.什么是類?...
    少帥yangjie閱讀 5,129評論 0 14
  • 一、框架 1、Mac系統(tǒng)及常用工具、進制;C數(shù)據類型、常量變量、運算符、表達式、格式化輸入輸出 2、關系運算符、邏...
    師景福閱讀 858評論 0 2
  • 9.29 寫在出發(fā)前。 晚,從北京出發(fā),臥鋪,180*50,很緊湊。三排鋪,過道里兩個人背對著也很難通過。我們都略...
    bronco_t閱讀 650評論 2 2

友情鏈接更多精彩內容