C 語句函式再探

2022-02-09 22:31:01 字數 1253 閱讀 3306

1. 表示式只計算,拋棄計算結果;

2. 空語句什麼也不做;

3.switch case語句漏寫break,將會從匹配到的情況開始執行,直到語句結束

4. 形參、實參、區域性變數、靜態區域性變數

所謂形參就是佔位之用,在函式開始時申請空間,並由傳入實參進行例項化(也可稱拷貝構造)。一般是區域性的,即只能在函式體內可見。

實參用來例項化/初始化形參

區域性變數的作用域是函式體或者語句內部,但是加上static修飾就變成了靜態區域性變數,它作用域還是該函式體,但生命期延長到了程式終止。

5. 函式返回值,還是發生了拷貝,即用函式體內的某變數初始化函式呼叫點的某臨時量。

6. 不要返回區域性變數的引用或指標,返回後就銷毀了,沒地兒去找了。

7. 引用返回左值,其他型別返回的是右值。

8. 內聯函式適用於優化規模較小、流程直接、頻繁呼叫的函式。

9. 有趣的返回錯誤資訊的巨集(靜態變數)

void trouble(int

m)}

(1)無參函式vs有參有預設值,歧義

int

get()

intget(int a = 5

)//呼叫get()

(2)傳值vs傳引用,歧義

int

get(int

a)int

get(int &a)

//int m = 10;

//呼叫get(m)

(3)引數存在隱式型別轉換,歧義

int get(int m)

long get(long m)

//double m = 10.123

//呼叫get(m)

參考資料

(有點問題)

(有點問題)

再探函式引數

c函式的所有引數均以 傳值呼叫 方式進行傳遞。這意味著函式將獲得引數值的乙份拷貝,這樣函式可以放心修改這個拷貝值,而不必擔心會修改呼叫程式實際傳遞給它的引數。普通資料型別主要包括 如下面 所示 include void swap int x int y int main 我們原本是希望編寫乙個函式,...

建構函式再探

建構函式基礎知識 建構函式初始值列表 初始化與賦值 建構函式使用初始值列表還是在函式體中給資料賦值的區別在於,前者是初始化了它的資料成員,後者是對資料成員執行了賦值操作。在很多類中,初始化和賦值的區別事關底層效率問題 前者直接初始化資料成員,後者則先初始化再賦值。除了效率外更重要的是,一些資料成員必...

7 5 建構函式再探

目錄7.5.2 委託建構函式 7.5.3 隱式的類型別轉換 7.5.4 類的靜態成員 觀察下面兩段建構函式的 初始化bookno,units sold,revenue sale data const string s,unsigned cnt,double price bookno s units ...