1.結構體
struct
結構體與陣列的不同:
1)結構體可以在乙個結構中宣告不同的型別,陣列做不到
2)相同結構的結構體是可以相互賦值的,陣列做不到
c++的
class
與struct
的區別:
class的成員訪問許可權預設為
private
,而struct
的成員訪問許可權預設為
public
結構體的定義
結構體型別變數的定義一般形式為:
struct 結構體型別名 ;
在結構體定義時要注意以下幾點:
1)結構體結構體型別定義中不允許對結構體本身遞迴定義,但可以使用指標指向本結構體。
2)結構體定義中可以包含另外的結構體,即結構體是可以巢狀的。
3)結構體變數可以在定義時進行初始化賦值。
結構體中的位欄位 略
2. 共用體
union
結構體和公用體(聯合)都是由多個不同的資料成員組成,但在任何同一時刻,共用體中只存放了乙個被選中的成員,而結構體的所有成員都存在,對公用體的不同成員賦值,將會對其它成員重寫,原來成員的值就不存在了,而對於結構體的不同成員賦值是互不影響的。
union 公用體名
變數名;
共用體占用記憶體為各大成員中占用最大者的記憶體。
3.列舉
列舉是一種使用者自定義型別,定義的基本格式為:
enum 列舉型別名
[變數名列表]
花括號中的內容稱為列舉表,其中的每一項稱為列舉常量,換言之,列舉表是列舉常量的集合。列舉表中每項後的「=
整形常數」是給列舉變數賦初值,用方括號代表這步可以省略,如果不給列舉常量賦初值,編譯器會為每乙個列舉常量賦乙個不同的整數值,第乙個為
0。當列舉表中某個常量賦初值後,其後的成員則按依次加一的規則確定其值。
4.sizeof運算子
使用方法
1)用於變數
sizeof的使用形式:
sizeof(var_name)
或 sizeof var_name
變數名可以不用括號括住,但是帶括號的用法更加普遍。
2)用於資料型別
sizeof的使用形式:
sizeof(type)
資料型別必須用括號括住
sizeof 結果
sizeof操作符的結果是
size_t ,
它被定義為
unsigned_int
型別,該型別保證能容納實現所建立的最大物件的位元組大小。
3)與strlen()比較
sizeof計算資料(包括陣列、變數、型別、結構體等)所佔記憶體空間,用位元組數表示,故將內容與』\0』的陣列元素計算在內。而strlen
計算字元陣列的字元數,以』\0』為結束標誌,且不講』\0』計算在字元內。
4)指標、引用、漢字及陣列的
sizeof 操作
指標可以視為變數的一種,在32
位機器系統下,所有指標變數的
sizeof
操作結果均為
4,若在
64位機器系統下,所有指標變數的
sizeof
操作結果均為8
所有引用變數的sizeof
,等同於被引用物件的
sizeof。
對於c字串,需要牢記
c/c++
中乙個漢字僅佔兩個位元組,且字串末尾有乙個空字元。
對於陣列,sizeof
可直接計算陣列大小。
5)struct 的空間計算
struct的空間計算較為複雜,總體上遵循兩個原則
第乙個原則是:整體空間是占用空間最大的成員(的型別)所佔位元組數的整數倍,但在32
位linux + gcc
環境下,若最大成員型別所佔位元組數超過
4,則整體空間是
4的倍數即可。
第二個原則是:資料對齊原則------
記憶體按結構體成員的先後順序排列,當排到該成員變數時,其前面已擺放的成員大小必須是該成員型別大小的整數倍,如果不夠則補齊,依次向後類推,但在
linux+gcc
環境下,若某成員型別所佔的位元組數超過4,如
double是8
,則前面已擺放的空間大小是
4 的倍數即可。
HCIA Storage 第三章ICT架構體系
1.資料與資訊 資料的定義 資料的定義是 資料是對所有 事物的數字表示。1.1資料與元資料的區別 以塊形式儲存是目前最常用的一種資料儲存方式,我們在進行資料儲存時,使用的是元資料加資料的形式 元資料相當於是資料的乙個摘要資訊,儲存著檔案的屬性 長度 儲存位置 型別等資訊,類似於字典中的索引和正文的關...
c 寶典 第三章 學習
1 c 禁止使用未賦值的變數,系統會給出預設值,變數的預設值大多是0,布林值為false.給變數賦值 myvariable 123 或者 int myvariable 123 注意 變數的 單詞首字母 大寫,每個節自建都有空格,最後分號結束。2 陣列,array 是一些相鄰的記憶體位元組,可以使用索...
第三章 結構表
線性表 零個或多個相同特性的資料元素的有限序列。首先它是乙個序列,元素之間是有順序 的,第乙個元素無前驅,最後乙個元素無後繼,其他的都有且只有乙個前驅和後繼。而所有元素按這種1對1的鄰接關係構成的整體就是線性表。線性表的儲存結構 線性表有順序表和鏈式兩類儲存結 構 一 順序表 順序表就是把線性表中的...