第3章 C 中的C

2022-08-13 13:00:18 字數 1572 閱讀 8444

用union

節省記憶體

使用場合:有時乙個程式會使用同乙個變數處理不同的資料型別,對於這種情況,有兩種選擇:可以建立乙個struct,其中包含所有

可能的不同型別的資料;也可以使用聯合union,它能把所有的資料放在乙個單獨的空間內,它計算出放在union中的最大項所必需的空間數,

來決定union所占用的空間數,使用union可以節省記憶體。

注意:每當在union中放置乙個值,這個值總在union開始的乙個地方,因此我們只需要建立乙個能容納任何乙個union變數的

「超變數」,所有的union變數位址都是一樣的(在類或struct中,位址是不同的)。

例子:

union packed ; 

intmain()

執行結果:

除錯技巧之把變數和表示式轉換成字串

介紹:在乙個預處理器巨集中的引數前面加乙個#,預處理器會把這個引數轉換成乙個字元陣列。

例子:

#define p(a) cout << #a << " : " << (a) << endl;

intmain()

執行結果:

函式指標的定義

void *(*(*fp1)(int))[10

];

float (*(*fp2)(int,int,float))(int

); typedef

double (*(*(*fp3)())[10

])();

int (*(*fp4())[10])();

第1行 :fp1是乙個指向函式的指標,該函式接受乙個整型引數並返回乙個指向含有10個void指標陣列的指標。

第2行 :fp2是乙個指向函式的指標,該函式接受三個引數且返回乙個指向函式的指標,該函式接受乙個整型引數並返回乙個float。

第3行 :fp3是乙個指向函式的指標,該函式無引數,且返回乙個指向含有10個指向函式指標陣列的指標,這些函式不接受引數,且返回double值。

第4行 :不是變數定義而是乙個函式定義。fp4是乙個返回指標的函式,該指標指向含有10個函式指標的陣列,這些函式返回整型值。

例子:

#define df(n) void n() df(a); df(b); df(c); df(d); df(e); df(f); df(g);

void (*func_table)() =;

intmain()

else

if(c < '

a' || c > 'g'

) (*func_table[c - 'a'

])();

}getchar();

return0;

}

執行結果:

第3章資料和C

本章介紹以下內容 程式離不開資料。把數字 字母和文字輸入計算機,就是希望它利用這些資料完成某些任務,例如,需要計算乙份利息或顯示乙份葡萄灑商的排序列表。本章除了介紹如何讀取資料外,還將教會讀者如何操控資料。c語言提供兩大系列的多種資料型別。本章詳細介紹兩大資料型別 整數型別和浮點數型別,講解這些資料...

C Primer Plus 第3章 資料和C

習題1 檢視當前系統整數的上限和下限 include include int max,int min include intmain void 2147483647,2147483648,2147483647 1.inf00e 000 1.175493e 040 process exited aft...

C 標準程式庫 筆記 第2章,第3章

2.2.1 typename的作用 t subtype 表示型別t中的乙個靜態變數 typename t subtype 表示t中的乙個子型別 成員函式模板可以放寬引數的檢查範圍 建構函式模板可以在複製物件時實現隱式型別轉換。2.2.2 int i int 2.2.4 koenig lookup規則...