C語言 自定義型別知識點總結

2021-09-19 11:19:11 字數 1223 閱讀 5433

.自定義型別部分知識。

知識點:

結構體型別建立

結構體初始化

結構體內存對齊

位段,位段計算機大小。

列舉+聯合。

1.結構體型別建立

struct stu ;
2.結構體初始化

struct student s;

struct student s=;

3.結構體內存對齊

對齊規則:

(3):結構體總大小為最大對齊數的整數倍;

(4):如果巢狀了結構體的情況,巢狀的結構體對齊到自己的最大對齊數的整數倍處,

結構體的整體大小就是所有最大對齊數的整數倍。
4.位段

(1)位段的宣告:

1.1位段的成員必須是 int、unsigned int 或signed int 。

1.2.位段的成員名後邊有乙個冒號和乙個數字。

(2)位段的記憶體分配:

2.1 位段的成員可以是 int unsigned int signed int 或者是 char (屬於整型家族)型別 。

2.2.位段的空間上是按照需要以4個位元組( int )或者1個位元組( char )的方式來開闢的。

2.3 位段涉及很多不確定因素,位段是不跨平台的,注重可移植的程式應該避免使用位段。

5.列舉+聯合

(1)列舉:

enum day ;

enum sem ;

列舉的優點:

1.1 增加**的可讀性和可維護性。

1.2和#define定義的識別符號比較列舉有型別檢查,更加嚴謹。

1.3 防止了命名汙染(封裝)。

1.4 便於除錯 。

1.5 使用方便,一次可以定義多個常量。

(2)聯合:聯合也是一種特殊的自定義型別 這種型別定義的變數也包含一系列的成員,特徵是這些成員公用同一塊空間(所以 聯合也叫共用體)。

union un ; union un un;
2.1特點:聯合的成員是共用同一塊記憶體空間的,這樣乙個聯合變數的大小,至少是最大成員的大小(因為聯合至少得 有能力儲存最大的那個成員)

2.2大小計算:聯合的大小至少是最大成員的大小。 當最大成員大小不是最大對齊數的整數倍的時候,就要對齊到最大對齊數的整數倍。

自定義型別知識點

1 結構體的宣告 在宣告結構體的,必須列出它包含是所有成員。這個列表包括每個成員的型別和名字。struct tag 結構體標籤 variable list 變數列表結構體標籤 允許為成員列表提供乙個名字,可以在後續的宣告中使用。標籤允許多個宣告使用同乙個成員列表,並且建立同一種型別的結構。這個宣告把...

自定義型別知識點小結

一.結構體 1.結構是一些值的集合,這些值稱為成員變數。結構的每個成員可以是不同型別的變數。2.結構的宣告 這裡的tag指的是結構體的名稱,原則上可以省略,但一般不建議省略。舉個例子,這裡我們定義乙個關於學生基本資訊的結構體 3.結構體成員 結構體的成員可以是標量,陣列,指標,甚至是其他結構體。這裡...

自定義型別 聯合體知識點總結

聯合體 和結構體形式差不多,都是包含一系列的成員。但是聯合體相較結構體來說有一點特殊就是 聯合體的所有成員共用一快記憶體空間。聯合體的宣告 union un union un un 定義乙個聯合體變數 第乙個成員變數的位址跟聯合體的位址一樣,這點跟結構體類似。聯合體的特點 成員共用乙個記憶體空間,這...