指標與引用做引數的不同

2021-04-28 18:41:04 字數 451 閱讀 9698

指標和引用一直是學習c++時的乙個難點,不知道什麼時候應該用指標,什麼時候應該用引用。下面是指標與引用做為函式時的不同,看了之後,也許上面的問題就不是問題了,呵呵。

1.兩者都可以不用複製變元而提高效率,但是指標的傳遞實際上是複製了指標的,而引用沒有複製。

2.雖然兩者都可以改變變元的值。但是如果函式引數是指標那就是明顯暗示傳入的值可能被改變,而傳引用沒有這個暗示。

3.指標引數可以接收空值,而引用必須要指向乙個值。

4.沒有被宣告為const的引用不能傳遞常量,因為編譯器不允許建立對常量的引用。

5.指標需要解除引用才能獲得或操作它指向的變數值,而引用不需要這一步。

終上,我得出以下什麼時候用引用,什麼時候用指標的規則,如果不對,請大牛們指正:

1.為了獲得高效能時使用指標和引用引數。

2.如果要改變變元的值就用指標做引數,不就用引用做引數,並加上const修飾。

引用做引數與引用做返回值

一 引用做引數 引用做引數時,和c語言中的 傳址 是乙個道理,即通過函式來改變身處主函式中的變數。例 void fun int b int main 執行fun函式後,主函式中的整型變數a的值就變為了22,因為a和b實際上是同一處空間但是有了不同的名字。可以拓展到交換主函式中變數的值 void fu...

陣列指標和陣列引用做引數的區別

陣列指標和陣列引用做引數的區別 是否能夠限定陣列大小 陣列降價 template void func1 t t template void func2 tt,tt int main 1 在c 中可以定義陣列的引用,用以解決c中無法解決的 陣列降價 問題,我們先來看看什麼是 陣列降價 先看如下 voi...

陣列指標和陣列引用做引數的區別

template void func1 t t template void func2 tt,tt int main 1 在c 中可以定義陣列的引用,用以解決c中無法解決的 陣列降價 問題,我們先來看看什麼是 陣列降價 先看如下 void test char array 20 char array ...