關於C 引用型別一點認識

2021-08-23 15:26:28 字數 759 閱讀 9461

引用型別可以和指標一樣指向某個變數,但兩者在使用的時候還是有許多區別,

1.宣告乙個引用型別後,一定要給他賦值,否則編譯通不過,特別是在類中,如果有引用成員變數時,一定要在建構函式的初始化列表中初始化,例如:

class foo

private:

int& var; };

foo f; // error, 沒有初始化引用變數var

2.引用型別在使用時有一定的限制,函式不能返回乙個臨時變數的引用,例如:

//error

int& foo(int a, int b)

變數c是臨時變數,返回c的引用可能會引起嚴重錯誤

3.引用型別適用於函式傳遞引數,這是非常方便的,避免了複製拷貝,但要注意的是,傳遞的引數必須是變數,而不能是數值常量,例如:

int foo(int& a, int& b)

// int a =0, b=1, c=2;

char d='d';

a = foo(b, c); //ok

a = foo(b, (int)d); //error

a = foo(1, 2); //error

4.引用變數一旦指向某個變數後,就不能再改變它所指向的引用,只能改變指向變數的值,因此如果需要動態改變它所指向的變數,那麼引用型別就不適用了,那就該用指標,例如:

int a =10;

int& ref = a;

a = 20; // ref=20

ref = 30; // a=30

C 中對值型別和引用型別的一點認識

區別值型別和引用型別的重要一點就是值型別賦值的時候是給出一塊記憶體空間,空間裡放下要賦給值型別的值。而引用型別是開闢一塊記憶體空間,空間裡放下的是要賦給引用型別值的指向位址。就像乙個是複製了銀行卡裡的現金,你花了你複製的現金,和該銀行卡是沒有關係的。而引用型別是複製了乙個銀行卡,此卡為銀行卡的副卡,...

關於引用型別和值型別一點體會

有list資料結構如下 name numbera2 a3b7 現在需要把name相同的項合併,number累加,就是下表 name numbera5 b7雖然邏輯可以控制list無重複項,為了保險,我選擇用dictionary作為中間物件來實現功能,如下 1 public listmergedata...

關於C 中靜態的一點認識

1.靜態直觀的特點 靜態成員最顯著的乙個特點就是它的作用域是全域性的。只要在呼叫處引入了對應的命名空間,那麼我們可以在 任何地方都可以直接使用。凡是具有全域性特徵的東西我們就可以考慮使用靜態。在實際的開發中,靜態字段我們常用實現資料的共享,修飾為靜態的方法當做常用的工具方法來使用。2.命名上的思考 ...