《C陷阱與缺陷》第四章

2021-08-20 15:23:42 字數 1262 閱讀 1205

《c陷阱與缺陷》第四章--連線

4.1、什麼是聯結器

聯結器是將多個通過編譯器編譯後的c源程式,連線成乙個載入模組

4.2、宣告和定義

變數定義:用於為變數分配儲存空間,還可為變數指定初始值。程式中,變數有且僅有乙個定義。

變數宣告:用於向程式表明變數的型別和名字,宣告不分配空間。

extern

int i //宣告

int i //定義

乙個變數可以宣告多次,只能定義一次。

在程式的乙個地方使用extern int temp 宣告了乙個變數temp,則在其他地方必須包括它的定義。

有關宣告和定義在程式設計時的注意事項:不要把變數定義放入.h檔案,這樣容易導致重複定義錯誤。

4.3、命名衝突與static修飾符

通過使用static修飾符修飾的變數和函式,作用域只在當前原始檔。為了避免可能出現的命名衝突,只在當前作用域有用的都要設定成static。

4.4、形參,實參和返回值

如果乙個函式在定義宣告之前被呼叫,則函式預設的返回值為int

#include

intmain

(void)

double

hello

()#include

intmain

(void)

inthello

()

乙個函式中的形參中如果沒有float,short,char型別的引數,那麼在函式宣告時可以省略引數型別的說明,例如:

#include

//此處省略了引數型別

double

square();

intmain

(void)

double

square

(double x)

4.5、檢查外部型別

1,變數的外部引數變數與內部引數變數不一致(宣告和定義的型別不同),會引起程式問題。比如:

//由於陣列和指標取值方式的不同(指標為間接定址),以下兩個宣告不統一會引起很大問題。

extern

char *n;

char n;

2,外部函式的返回值和內部的函式返回值不同。由於返回值的不同,在呼叫時也會發生無法**的錯誤。

4.6,標頭檔案

為了避免錯誤,可以將宣告都寫在乙個.h標頭檔案中。使用這個外部變數就要包括這個標頭檔案。

C 第四章習題

1 定義乙個複數類complex,過載運算子 使之能用於複數的加法運算。將運算子函式過載為非成員 非友元的普通函式。程式設計序,求兩個複數之和。2 定義乙個複數類complex,過載運算子 使之能用於複數的加減乘除。運算子過載函式作為complex類的成員函式。程式設計序,分別求兩個複數之和 差 積...

C 第四章 陣列

二維陣列 陣列是一組相同元素的集合.陣列的建立方式 type t arr name const n type t 是指數組的元素型別 const 是乙個 常量表示式,用來指定陣列的大小 陣列建立的例項 1 int arr1 10 2 int count 10 int arr2 count 3 cha...

C語言第四章

4.2 用if語句實現選擇結構 4.2.1 用if語句處理選擇結構舉例 4.5條件運算子和條件表示式 4.6 選擇結構的巢狀 4.7用switch語句實現多分支選擇結構 4.8 選擇結構程式綜合舉例 4.1 選擇結構和條件判斷 4.2 用if語句實現選擇結構 4.2.1 用if語句處理選擇結構舉例 ...