函式形參 指標,引用,const,陣列形參

2021-09-14 05:24:51 字數 1131 閱讀 6840

指標也是物件,也會拷貝,所以分實參指標和形參指標。在傳進函式時,實參進行拷貝,所以在函式裡改變指標值不影響實參。

void reset(int *ip)

引用不是物件,通過引用可以改變實參

void reset(int &i)

使用引用的好處是避免了拷貝。

其實也只是兩個變數名的傳遞,和變數規則一致,如果在函式中只是用值而不改變值,就用const修飾一下形參。

常見錯誤是想接受常量時,但把函式形參設定為非常量引用,這樣會限制傳入常量。

string::size_type  find_char(const string &s, char c, string::size_type &occurs);

find_char("hello world",'o',ctr); //"hello world"是const物件,想不報錯,就要把s設定為const,

陣列作為形參時,退化成指標,陣列名const屬性不保留。

陣列大小也無意義,需要傳進另乙個引數指示陣列大小。

void print(const int ia, size_t size);

void print(const int *ia, size_t size);

void print(const int ia[10], size_t size);

這個沒怎麼用過。這時陣列還是陣列

void print(int (&arr)[10]);

int i = 0;

int j[2] = ;

int k[10] = ;

print(&i); //***

print(j); //***

print(k); //正確

兩種形式:因為二維陣列和指標陣列一對

void print(int (*matrix)[10], int rowsize);

void print(int matrix[10], int rowsize);

函式形參中的const引用

這裡將c primer中函式形參章節有關const和引用的問題簡單小結如下 一 非const非引用形參 這個是乙個平庸的情形。函式引數通過複製對應的實參實現初始化,函式本身對形參的修改不會影響到實參。傳遞給這類函式的實參可以是乙個const型的物件,也可以是非const的物件。乙個需要注意的事情是,...

函式形參 原型 指標 引用

寫的這些是在給學弟學妹講解時自己更深層次的理解,為別人解惑,思考過程中自己也有新的認識。更重要的,這些或許是將來某天我要放棄這行時,最後堅持的理由 曾經熱愛過的理想。一 int a 3,b 4 void f int x,int y f a,b cout二 若要使a b值發生改變如下 void f i...

非引用形參VS指標形參VS引用形參

一 非引用形參 voidadd1 intv1 這是最普通的形參方式,當函式被呼叫時,呼叫拷貝建構函式,生產乙個新的例項,函式所有的修改,都是對新的例項的修改 函式退出之前,會呼叫析構函式,資源。二 指標形參 voidadd2 int p 使用指標做為函式的形參,同樣指標的值 指標的位址 不會因為 p...