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