C Primer 筆記 第六章 函式

2021-08-18 08:47:48 字數 1422 閱讀 4352

函式的呼叫完成兩項工作:一是用實參初始化形參,二是將控制權轉移給被呼叫函式。

函式最外層作用域中的區域性變數也不能使用與函式形參一樣的名字。

形參和函式體內定義的變數都是區域性變數。普通的區域性變數只存在於其定義所在塊的執行時間內,內建型別的未初始化的區域性變數將產生未定義的值。

區域性變數在程式第一次經過定義語句時初始化,直到整個程式終止才銷毀。

如果形參是引用型別,那麼它將繫結到對應的實參上,他對應的實參被引用傳遞,即形參繫結了實參。

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

可以使用引用形參返回額外資訊,達到乙個函式同時返回多個值的效果。

使用引用可以避免拷貝(拷貝大的型別物件或者容器物件比較低效,甚至有些型別不支援拷貝)

允許定義若干函式名相同的函式,但不同的函式的形參列表應該有明顯的區別。

陣列不能被拷貝,所以無法以值的形式傳遞陣列引數,陣列會直接轉換成指標。在形參中陣列的維度不具有強制力。

陣列的宣告中,括號的影響

cpp

int &arr[10]; //arr為引用的陣列

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

int *arr[10]; // arr是由10個指標構成的陣列

int ( * arr)[10]; //arr是含有10個整數的陣列的指標。

使用 argv 中的實參時,可選的實參從 argv[1] 開始, argv[0] 儲存的是程式名。

initializer_list物件中的元素永遠是常量值。

函式也可以返回引用,該引用只是它所引物件的乙個別名。不要返回區域性物件的引用或指標。

呼叫乙個返回引用的函式得到左值,可以像使用其他左值一樣來使用改呼叫。

c++11 中,函式可以返回花括號包圍的值的列表。

使用尾置返回型別來簡化函式宣告。

cpp

auto func(int i) -> int ( * )[10];

int (* func(int i))[10];

以上兩條宣告等價。

乙個擁有頂層 const 的形參無法和另乙個沒有頂層 const 的形參區分開來。

一旦某個形參被賦予了預設值,它後面的所有形參都必須有預設值。函式呼叫時,實參按位置解析,只能省略尾部的實參。

函式的後續宣告只能為之前沒有預設值的形參新增預設實參。

內聯說明只是向編譯器發出乙個請求,編譯器可以選擇忽略這個請求。

constexpr 函式要求函式的返回型別以及所有形參的型別都是字面值型別,且函式體中有且只有一條 return 語句。

所有算術型別轉換的級別都一樣,這方面容易出現二義性呼叫。

當把函式名作為乙個值使用時,該函式自動地轉換成指標。

函式的形參可以實指向函式的指標。

c primer 筆記 第六章 函式

1.函式的返回型別不能是陣列型別或函式型別,但可以是指向陣列或函式的指標 返回陣列的指標 1 使用型別別名 typedef int arrt 10 using arrt int 10 與上面的宣告等價 arrt func int i 2 直接宣告 int func int i 10 3 使用尾置返回...

C Primer 第六章 函式

1.實參 argument 是形參 parameter 的初始值。第乙個實參初始化第乙個形參,以此類推 2.c 中,名字有作用域,物件有宣告週期 lifetime 3.形參和函式體內部定義的變數統稱為區域性變數 local variable 4.自動物件 automatic object 只存在於塊...

C Primer 第六章 函式

1.1 區域性變數 1.2 函式宣告 1.3 分離式編譯 2.引數傳遞 2.2 傳引用引數 2.3 const 形參和實參 2.4 陣列形參 2.5 main 處理命令列選項 2.6 含有可變形參的函式 3.返回型別和 return 語句 3.3 返回陣列指標 4.函式過載 4.1 過載和作用域 5...