C 學習(八)函式基礎

2021-05-21 12:53:30 字數 1116 閱讀 8590

1.函式是c++的程式設計模組。要使用函式,必須提供定義和原型,並呼叫該函式。函式定義是實現函式功能的**;函式原型描述了函式的藉口:傳遞給函式的值的數目和種類以及函式的返回型別。函式呼叫使得程式將引數傳遞給函式,並執行函式**。

2.函式的值傳遞,是通過c++的拷貝機制,形參是新變數,形參是實參的拷貝,這種形式保護了原始資料的完整性。

3.c++將陣列名引數視為函式首元素的位址。從技術上講,這仍然是按值傳遞的,因為指標是原始位址的拷貝,但函式將是偶那個指標來訪問原始陣列的內容。當且僅當宣告函式的形參時,typename arr和typename* arr才是等價的。

4.c++提供了3中便是c-style字串的方法:字元陣列、字串常量和字串指標。它們的型別都是char*(char指標),因此被作為char* 型別引數傳遞給函式。

5.c++提供string類表示字串,string物件既可以作為函式引數傳入,也可以作為函式返回值返回,使用size()方法可以知道string物件的長度

6.c++處理結構和基本型別一樣,按值傳遞。如果結構比較大,可以用結構指標作為函式引數,這樣效率會非常高。

7.理解二維陣列作為函式引數進行傳遞,理解指向指標的指標

二維陣列作為引數傳遞,兩種宣告方式:

int sum(int (*arr)[4], int size);//arr是指標,不是陣列。arr是陣列指標,指向包含4個int型元素的陣列

int sum(int arr[4],int size);

上面的宣告方式,只需要指定列數,行數作為另乙個引數進行傳遞

ar2[r][c] == *(*(ar2+r) + c)

ar2//指向二維陣列第一行的陣列指標(一維陣列的指標),ar2也是指向指標的指標

ar2+r//指向第r行的陣列指標

*(ar2+r)//第r行的一維陣列,同時也是第r行一維陣列的指標(首元素位址)

*(ar2+r)+c//第r行的一維陣列的第c個元素位址

*(*(ar2+r)+c)//ar2[r][c]的值

C 學習(八) 函式探幽

內聯函式呼叫時無需跳到另乙個位置執行 而是直接將 塊替換到呼叫位置,因此執行速度更快。但代價是占用了更多的記憶體。在呼叫次數多,函式比較小時適用 要使用這項特性,必須採取下列措施 在函式宣告前加上關鍵字inline 在函式定義前加上關鍵字inline include an inline functi...

C 基礎學習 函式

目的 了解函式比c增加的內容 1 函式引數引用 優點 避免記憶體拷貝造成的效能開銷。場景 一般用於函式引數傳遞及返回值這種情況。功能 1 作為函式返回值 2 作為函式引數,可使用const修飾,防止函式內部修改。2 預設引數 1 預設值從右邊開始往左定義,中間不能有中斷。2 一般在宣告時寫好預設引數...

C 學習筆記(八) 內聯函式

內聯函式 內聯函式實際上並不是真正的函式,它比較像define巨集定義,它實際上就是將 段直接替換到呼叫函式的地方,從而實現時間的節約。使用 主要用在 較短的函式中,同時不能用在遞迴函式中。在函式最前面加上inline就是內聯函式了 inline函式的本質也是用空間換取時間的一種操作 例子程式 in...