c Primer 第六章不熟悉知識點總結

2022-07-15 01:57:09 字數 1610 閱讀 8665

一、分離式編譯

分離式編譯允許我們把程式分割到幾個檔案中去,每個檔案獨立編譯。

-c和-o都是gcc編譯器的可選引數。-c表示只編譯(compile)原始檔但不鏈結,會把.c或.cc的c源程式編譯成目標檔案,一般是.o檔案。-o用於指定輸出(out)檔名。不用-o的話,一般會在當前資料夾下生成預設的a.out檔案作為可執行程式。

二、(1)使用引用引數,當我們的引數很大或者根本無法拷貝時(因為值引數需要將實參拷貝給形參)使用引用引數就很好的解決了這個問題,並且盡量去使用引用引數而不是指標引數。

(2)使用形參返回額外資訊

其實就是在函式多加了乙個形參,因為可以直接利用引用引數改變實參的值,所以在函式中我們可以把引用引數的值改變以達到改變實參的值。而獲得函式中想要得到的值。

1

int temp(int &count, string &s)29

return

count;

10 }

從這個函式中我們可以得到count的值和s的值。

(3)、盡量使用常量引用,來避免一些不必要的錯誤。

三、陣列作為形參的時候,其實編譯器把陣列轉化成了指標。陣列也可以作為引用形參,但是應該注意是 sum(int (&temp)[5]){} ,而不是int &temp[5].

四、含有可變形參的函式

(1)、initializer_list形參

如何函式的實參數量未知,而實參的資料型別相同,我們就可以用initializer_list。initializer_list定義在同名的標頭檔案中。和vector一樣,initializer_list也是乙個模板,不一樣的是initializer_list的元素永遠是常量值。我們無法改變他的物件中元素的值。如果我們編寫乙個輸出錯誤資訊的函式:

1 err_msg(initializer_list msg)

29 }

補充一點在for迴圈中的條件中,不管是++i還是i++,其結果都是一樣的,而我們一般為了效能選擇++i。因為i++會複製i的副本。

五、返回型別和return語句

return語句終止當前正在執行的函式並返回到呼叫該函式的後面。

列表初始化返回值

1 vectormsg()2;

6 }else7;

9}10 }

六、過載和頂層const

乙個擁有頂層const的形參無法和乙個不含const區分開來

int function(int

const

temp){}

int function(int temp){}

七、內聯函式

在我們定義的乙個小、精簡函式前面加乙個inline,就變成了內聯函式,內聯函式可以優化我們的**,避免函式呼叫的開銷。注意的是很多編譯器都不支援內聯函式的遞迴。和其他函式不一樣的是,內聯函式一般定義在標頭檔案中。

inline const

bool &result(string parameter1, string

parameter2)

C primer 第六章 語句

1 有些程式設計風格建議總是在if後面使用花括號,這樣做可以避免日後修改 時產生混亂和錯誤。塊語句使用花括號是乙個比較好的做法。2 break語句用於結束最近的while do while for或者switch語句,並將程式的執行權傳遞給緊接在被終止語句之後的語句 跳出包含它的最裡層的迴圈,比如是...

C Primer第六章習題

6.4 編寫乙個與使用者互動的函式,要求使用者輸入乙個數字,計算生成該數字的階乘。在main函式中呼叫該函式。include using namespace std int factorial int num int main 6.5 編寫乙個函式輸出其實參的絕對值。include using na...

c primer 筆記,第六章

區域性靜態物件使用static宣告,宣告一次後下次再呼叫該函式,則該宣告語句則被忽略 練習6.7,第一次被呼叫時返回0,以後每次呼叫返回值加一 size t count 當函式無需修改引用形參的值時最好使用常量引用 使用實參初始化形參時會忽略頂層const 使用普通引用會極大地限制函式所能接受的實參...