C語言 第七章

2021-06-04 11:12:48 字數 2206 閱讀 8984

一.

在計算機中,位(bit)

是表示和儲存資訊的最小單位,

1b=8bit。c

語言提供一種在位一級進行操作的機制。它允許在乙個結構體中以位為單位來指定其成員所佔記憶體的長度,這種以位為單位的成員稱為「位段」,或「位域」。例如:

struct a

unsigned aa: 1;

unsigned bb: 1;

unsigned cc: 1;

}s;這個結構體型別與前面的結構體型別的不同之處在於,結構體成員的長度以位為單位,需要在宣告結構體型別時指定各位段的長度。具體方法是:在位段名的後面有乙個冒號,莫阿豪的後面是所指定的位數。

二.struct a

unsigned int aa: 3;

unsigned int bb: 1;

unsigned int cc: 1;

}x;需要說明的是,在上面結構體中型別宣告符為unsigned

,這裡是

unsigned int

,二者是等價的,

int可以省略。不要誤以為位段

a是乙個整型變數,佔

16位。

unisgned int

的意思是開闢乙個整型資料空間,然後從其中分配給位段

aa3個二進位制位。接著,從其中分配

4個位元組給位段

bb。如果各位段的長度超過乙個整型資料的空間,即下乙個位段已容納不下,這時系統會自動開闢第二個整型資料的空間,從下乙個整型資料空間開始存放下乙個位段,即乙個位段不能跨越

2個整型空間。

也可以指定某一位段從乙個整型資料空間的下乙個位元組開始存放,而不是緊接著前面的位段存放。

struct a

unsigned int aa: 3;

unsigned int: 0;

unsigned int bb: 1;

unsigned int: 0;

unsigned int cc: 1;

}x;位段aa

後面定義乙個「位數為

0」的無名位段,其作用是使下乙個位段從另一位元組開始存放。

三.要注意每乙個位段所能儲存的最大值。這不是指定義位段時所占用的位元數,而是它們所能表示的最大數。例如x.aa

佔3bit

,最大值為

7,如果賦以值

8就會出現溢位,從而使

x.aa

只能取8

的二進位制數的低3位

(000)。

四.不能引用位段的位址,因為位址是以位元組為段位的,無法指定位。

五.->優先級別最高。用圓點運算子「

.」連線結構體變數與其成員;用

->

運算子連線指標變數與其所指結構體變數的成員。

六.鍊錶與陣列相比,有以下不同點

1.組成陣列的元素是順序存放的,他們占有一片連續的儲存空間。而鍊錶元素——稱為結點,不一定存放在一片連續的儲存空間中,兩個相鄰結點在記憶體中也不一定相鄰。

2.在鍊錶中,前乙個結點靠指標「指向」下乙個結點,只有通過前乙個結點才能找到下乙個結點。要查詢乙個結點必須從頭指標開始,逐個結點順序查詢。

七.共用體資料型別是將不同的資料項存放於同一段記憶體空間的一種構造資料型別。

共用體型別與結構體型別的比較

1.儲存結構不同

系統要為結構體變數的每個成員分配相應的儲存空間,每個成員都有自己的空間;而系統對共用體變數儲存空間的分配是按最大的乙個成員所占用的儲存空間進行分配的,所有成員共享這一空間。

2.由於結構體的每個成員都有自己的儲存空間,所以所有成員可以同時儲存;而共用體的所有成員共用乙個儲存空間,同一時間只能儲存乙個成員。

3.結構體變數可以在定義時進行初始化;而共用體變數不能在定義時進行初始化。也不能直接用共用體變數名進行輸入或輸出。

共用體變數的應用:

1.應用在資料處理上

struct

long num;

char name[20];

char ***;

char job;

union

int class;

char group[20];

}category;

如果job輸入s

(學生),則程式接著接收乙個整數給

class

(班級號);如果

job項值為「

t」(教師),則接收乙個字串給

group[20].

2.發現資料的底層儲存形式

p276

C語言第七章(7 1 7 4)

7.3 呼叫函式 7.3.2 函式呼叫時的資料傳遞 7.1 為什麼要用函式 7.3 呼叫函式 7.3.4 函式的返回值 7.4 對被呼叫函式的宣告和函式原型 執行結果 在這裡插入描述 how do you do include intmain void print star void print m...

C語言 第七章 陣列

c語言支援一維陣列和多維陣列。如果乙個陣列的所有元素都不是陣列,那麼該陣列稱為一維陣列。在c語言中使用陣列必須先進行定義。一維陣列的定義方式為 型別說明符 陣列名 常量表示式 型別說明符是任一種基本資料型別或構造資料型別。陣列名是使用者定義的陣列識別符號。方括號中的常量表示式表示資料元素的個數,也稱...

C語言基礎 C語言第七章

溫習 三種迴圈結構 while 條件表示式 迴圈體 dowhile 條件表示式 for 表示式1 表示式2 表示式3 表示式1 迴圈體 表示式3 第七章 陣列 一維陣列的定義與引用 之前講到的資料基本上都是屬於基本型別 整型 字元型 實型 的資料,c語言還提供了構造型別的資料,他們有陣列型別 結構體...