c primer 第六章總結

2021-08-13 05:28:02 字數 2802 閱讀 8443

(1)形參一定會被初始化

(2)形參名可選,如果沒有形參名那麼我們就不能使用該形參,所以一般都會有形參名。出現未命名的形參,一般就是說我們在該函式中用不到它,但還是必須給他提供實參。傳值:

(1)發生值的拷貝

(2)形參與實參是兩個不同的東西

(3)對形參的操作不會影響實參

傳引用(1)傳引用是它對應實參的乙個別名

(2)對它操作就是在對實參操作

(1)使用傳引用來避免拷貝。如果實參很大或者根本就不支援拷貝,只能用傳引用。

(2)函式不需要改變引用引數的值就用const來修飾。盡可能使用const

void print(const

char *str)

}

傳遞頭指標與尾後元素的指標(既然是尾後指標,那麼就不能解引用)
#include

using

namespace

std;

void print(const

int *beg,const

int *end)

}int main(void)

; print(begin(a),end(a)); //呼叫形式

}

想象乙個場景。我要實現乙個功能相同的函式,但是我每次要給他傳的引數不相同。那麼就會用到可變參了!
#include

#include

using

namespace

std;

void err_msg(initializer_list list1,int a = 0) //可變參

int sum(initializer_list const& list2)

int main(void)

); err_msg();

err_msg({});

cout

<< "sum == "

<< sum() << endl ;

}

執行截圖;

注意事項:

(1)只用於與c函式互動的介面

(2)大多數類型別的物件在傳遞的過程中都無法正確拷貝

(3)省略符形參只能出現在形參列表的最後乙個位置

有下列兩種形式:

void foo ( parm_list , …);

void foo ( … );

第一種形式為特定數目的形參提供了宣告。在這種情況下,當函式被呼叫時,對於與顯示宣告的形參相對應的實參進行型別檢查,而對於與省略符對應的實參則暫停型別檢查。在第一種形式中,形參宣告後面的逗號是可選的。

(4)每個引數的型別可以不同,也可以相同

(5)與無參函式有別

(6)省略號的優先級別最低,所以在函式解析時,只有當其它所有的函式都無法呼叫時,編譯器才會考慮呼叫省略號函式的

(7)在傳遞與取用的時候,要型別一一對應

#include 

#include

void argfunc(const

char *str ... )

int main(void)

執行截圖:

參考學習:參考學習1

參考學習:參考學習2

一種形參但在多次呼叫中都反覆使用同乙個值,可傳參也可不傳參,不傳參就使用預設值,傳參就使用所傳入的實參。一般在函式宣告中指定,放在合適的標頭檔案中。

void err_msg(initializer_list list1,int a = 0)    //a 就是乙個預設引數
對於較小的函式(為了程式的「好看性」),我們可能真正執行的就那麼一小會,但是對於函式的呼叫可能花費很長的時間。也就是說函式呼叫花費的時間會比函式真正起作用的時間要長的多,如果頻繁呼叫程式效率就會非常低下,(模擬:執行緒池等)那麼我們就會用到內聯函式來解決這個問題了

內聯函式是指用inline關鍵字修飾的函式。在類內定義的函式被預設成內聯函式。內聯函式從源**層看,有函式的結構,而在編譯後,卻不具備函式的性質。

內聯函式不是在呼叫時發生控制轉移,而是在編譯時將函式體嵌入在每乙個呼叫處。編譯時,類似巨集替換,使用函式體替換呼叫處的函式名。內聯說明只是向編譯器發出乙個請求,編譯器可以選擇忽略這個請求

#include

using

namespace

std;

/* * struct timespec ;

*/timespec diff(timespec start, timespec end)

else

return temp;

}inline

void fun1(int temp)

int main(void)

double compare_1(const

int &a,const

int &b)

int main(void)

執行截圖:

(2)函式型別

參考學習:參考學習

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 使用普通引用會極大地限制函式所能接受的實參...