C 筆記 函式 筆記

2021-08-14 16:05:01 字數 1540 閱讀 9965

在標頭檔案中進行函式宣告

建議變數和函式應該在標頭檔案中宣告,在原始檔中定義。

使用引用避免拷貝

如果函式無須改變引用形參的值,最好將其宣告為常量引用。

// 比較兩個string物件的長度

bool isshorter(const

string &s1,const

string &s2)

表示陣列大小的形參
void print(const int ia,size_t size)          // 等價於const int* ia

f(int &arr[10]); // 將arr宣告成了引用的陣列

f(int (&arr)[10]); // arr是具有10個整數的整型陣列的引用

int *matrix[10]; // 10個指標構成的陣列

int (*matrix)[10]; // 指向含有10個整數的陣列的指標

initializer_list如果函式的實參數量未知但是全部實參的型別都相同,可以使用initializer_list型別的形參。

和vector一樣,initializer_list也是一種模板型別,定義initializer_list物件時,必須說明列表中所含元素的型別。

initializer_list ls;

initializer_list it;

和vector不一樣的是,initializer_list物件中的元素永遠是常量值,無法改變initializer_list物件中元素的值。

如果想向initializer_list形參中傳遞乙個值的序列,則必須把序列放在一對花括號內。

void error_msg(errcode e,initializer_list il)

// expected和actual是string物件

if(expected != actual)

error_msg(errcode(42),);

else

error_msg(errcode(0),);

省略符形參省略符形參是為了便於c++程式訪問某些特殊的c**而設定的,這些**使用了名為varargs的c標準庫功能。省略符形參應該僅僅用於c和c++通用的型別。特別應該注意的是,大多數類型別的物件在傳遞給省略符形參時都無法正確拷貝。

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

void foo(parm_list,...);

void foo(...);

C 函式 筆記

內聯函式只適用於小函式,使用內聯函式需要注意以下幾點 內聯函式中不能含有任何迴圈語句以及switch和goto語句 內聯函式的宣告必須出現在內聯函式第一次被呼叫之前 內聯函式中不能說明陣列 遞迴函式不能定義為內聯函式 函式過載 函式引數個數或型別不同,可以構成過載函式 生命期 是指乙個識別符號從被建...

C 函式筆記

函式的呼叫需要完成兩項工作 一 實參初始化物件的形參 二 將控制權交給函式,主調函式中斷,被調函式執行。函式的返回型別不能是陣列。陣列不可以做函式返值的原因在於,函式的返值是賦值傳遞的,而陣列不可以進行簡單賦值。也就是函式的返回值是簡單的臨時變數方法,所以不支援是陣列。當然,函式不能返回函式,雖然不...

C 函式筆記

在c 中,函式的形參列表中的形參是可以有預設值的。語法 返回值型別 函式名 引數 預設值 示例 int func int a,int b 10,int c 10 1.如果某個位置引數有預設值,那麼從這個位置往後,從左向右,必須都要有預設值 2.如果函式宣告有預設值,函式實現的時候就不能有預設引數 i...