C和指標 第十章 結構和聯合 (二)

2022-04-16 13:59:25 字數 939 閱讀 2326

結構體傳值:

typedef struct  produts;

//傳入指標,加const修飾,防止程式修改

void test(produts const *ptr);

位段:結構體可以實現位段,位段的宣告和結構體型別,但是成員是多個位的字段,不同長度的字段儲存在乙個或多個整形變數中。位段的型別必須宣告成int,signed,unsigned int 型別,其次,成員名後面時乙個冒號,和乙個整數,整數指定位段所佔位數目:

struct char ;
佔32位,對於16位機器來說,size超過了整型長度,所以是不可移植的。位段的長處是節省空間,和對位的操作更方便。

聯合union

聯合可以看成在某個位子上可以儲存不同型別的值,但是只能儲存乙個,聯合的成員引用的是記憶體中相同的位置,可以在不同時刻,把不同的東西存在同乙個位置。

var聯合可以儲存浮點數,整數和字串指標,根據不同的型別,讀取出不同的值。但是聯合一次只可以儲存乙個值,所以在函式中使用時,無法確定所儲存的型別,如果和struct一起使用可以新增乙個標示代表所儲存的型別。

#include //型別var可以放整數,浮點,字串指標。

typedef struct type;

union value;

} var;

//根據型別讀取值

void checkvar(var variable)

}int main()

注意:聯合的初始化值必須時第乙個成員型別,如果是其他型別,那麼會發生型別轉換成為乙個整數。

C和指標 第十章 結構和聯合 (一)

結構體 聚合資料型別是指,能夠同時儲存超過乙個的單獨資料,c語言中有兩個聚合資料型別,陣列和結構體。陣列中儲存的型別必須相同,元素通過下標和指標引用來訪問的。結構體也是一些值的集合,但是結構體中每個元素的值的型別可以不同,每個元素都有自己的名字,和整數字元一樣,結構體也是標量型別 結構體宣告 str...

第十章 陣列和指標

陣列初始化 當初始化列表中的值少於陣列元素個數時,編譯器會把剩餘的元素都初始化為0 個數多於陣列元素個數時,會視為錯誤 省略陣列中括號中的數字,編譯器會根據初始化列表中的專案來確定陣列的大小。days是陣列 sizeof days是整個陣列的大小 sizeof day 0 是陣列中乙個元素的大小 c...

C Primer Plus 第十章 陣列和指標

int sum int ar,int n intsum int int intsum int ar,int n intsum int int 指標減去乙個整數 指標必須是第乙個運算物件 相加的逆操作。遞減指標 逆操作遞增 指標求差 可以計算兩個指標的差值。通常,求差的兩個指標分別指向同乙個陣列的不同...