C 引用的簡單理解

2021-08-27 05:25:55 字數 2365 閱讀 4505

引用,顧名思義是某乙個變數或物件的別名,對引用的操作與對其所繫結的變數或物件的操作完全等價

語法:型別 &引用名=目標變數名;
特別注意:1.&不是求位址運算子,而是起標誌作用

2.引用的型別必須和其所繫結的變數的型別相同

1 #include2 using namespace std;

3 int main()

4.引用相當於變數或物件的別名,因此不能再將已有的引用名作為其他變數或物件的名字或別名

5.引用不是定義乙個新的變數或物件,因此記憶體不會為引用開闢新的空間儲存這個引用

1 #include2 using namespace std;

3 int main()

6.對陣列的引用

語法:型別 (&引用名)[陣列中元素數量]=陣列名;
1 #include2 using namespace std;

3 int main();

5 int (&b)[3]=a;//對陣列的引用

6 cout<

7.對指標的引用

語法:型別 *&引用名=指標名;//可以理解為:(型別*) &引用名=指標名,即將指標的型別當成型別*

1 #include2 using namespace std;

3 int main()

8 int main()

6 int main();

8 func(number);

9 return 0;

10 }

語法:const 型別 &引用名=目標變數名;
常引用不允許通過該引用對其所繫結的變數或物件進行修改

1 #include2 using namespace std;

3 int main()

特別注意:

先看下面的例子

按 ctrl+c 複製**

#include

#include

using namespace std;

string func1()

void func2(string &str)

8 void func2(conststring &str)

特別注意:1.引用作為函式的返回值時,必須在定義函式時在函式名前將&

2.用引用作函式的返回值的最大的好處是在記憶體中不產生返回值的副本

2 #include3 using namespace std;

4 float temp;

5 float fn1(float r)

9 float &fn2(float r)

13 int main()

11 12 int main()//son是father的派生類son son;//son是類son的乙個例項father &ptr=son;//用派生類的物件初始化基類物件的使用特別注意:

ptr只能用來訪問派生類物件中從基類繼承下來的成員如果基類(類father)中定義的有虛函式,那麼就可以通過在派生類(類son)中重寫這個虛函式來實現類的多型。

1.在引用的使用中,單純給某個變數去別名是毫無意義的,引用的目的主要用於在函式引數的傳遞中,解決大塊資料或物件的傳遞效率和空間不如意的問題

2.用引用傳遞函式的引數,能保證引數在傳遞的過程中不產生副本,從而提高傳遞效率,同時通過const的使用,還可以保證引數在傳遞過程中的安全性

3.引用本身是目標變數或物件的別名,對引用的操作本質上就是對目標變數或物件的操作。因此能使用引用時盡量使用引用而非指標

對C 引用的簡單理解

引用是c 中的特殊用法,在c語言中是沒有的,有點類似c語言中指標的一種用法。引用簡單說就是對已經建立的起乙個別名,或者說建立乙個副本,但是它是不分配記憶體的。對引用變數的操作直接改變被引用變數的值,相當於是對位址操作,引用變數不能單獨存在,一定是要有被引用變數的存在,才會有引用變數。例如int a ...

C 指標的引用理解

指標可以作為引數傳遞直接修改所指的變數的值,如下 void change int p int main 指標傳遞實際上也是值傳遞,傳遞的值便是指標的位址,執行 p 20後,雖然傳遞的是乙個位址的副本,但是副本的值就是變數的位址,執行後,所指向的位址的值變成了20,達到了修改變數值的目的。所以,當需要...

對C 引用的理解

c 中引用是個非常重要的概念,引用是在c 中新增的一種復合型別,是已定義的變數的別名。但是這種別名有什麼作用呢?難道只是為了給變數起個綽號?並不是,引用變數的主要作用是用作函式形參,通過使用引用變數作為函式引數,函式將使用原始資料,而不是使用資料的副本,這樣除了指標之外,為函式訪問原始資料提供了另一...