C 中「 引用」和「 取位址」的區別

2021-10-02 13:56:09 字數 1312 閱讀 6655

作用上的不同

&作為引用是某一變數(目標)的乙個別名,必須在定義時候就進行初始化,若不進行初始化則會編譯報錯。

&作為取位址時,用來獲取指標指向的元素所在記憶體中的位址值。

int a=3;

int &b=a; //引用

int *p=&a; //取位址

//問題的參***如下

#include

#include

#include

#include

using

namespace std;

intmain()

cout << endl;

//利用begin和endi初始化vector物件

vector<

int>

vint

(begin

(a),

end(a));

cout <<

"vector內容是:"

<< endl;

//利用範圍for迴圈遍歷vector的每個元素

for(

auto val : vint)

cout << endl;

return0;

}

問題出在利用範圍for迴圈生成隨機數上,我將其中的&認為成了取址符,導致我不理解為什麼會通過取val的位址並為陣列a[ ]每個元素賦值。

for

(auto

&val : a)

為了驗證疑惑,利用輸出驗證c的型別

#include

#include

#include

#include

using

namespace std;

intmain()

}

cout << c <<

" "

<<

&a[i]

<<

" "

<< a[i]

<< endl;

的輸出結果為:

可以發現c不是位址,因為和&a[i]的數值差異太大,而和a[i]的數值相等,故推斷c可能是int型數值。

再根據引用的知識我們可以清晰的知道,這個就是引用。

引用和取位址區別

乙個是用來傳值的 乙個是用來獲取首位址的 引用 出現在變數宣告語句中位於變數左邊時,表示宣告的是引用.例如 int rf 宣告乙個int型的引用rf.取位址運算子 在給變數賦初值時出現在等號右邊或在執行語句中作為一元運算子出現時 表示取物件的位址.1 引用在賦值 的左邊,而取位址在賦值的右邊,比如 ...

C 中 引用 與取位址 的區別

乙個是用來傳值的 乙個是用來獲取首位址的 引用 出現在變數宣告語句中位於變數左邊時,表示宣告的是引用.例如 int rf 宣告乙個int型的引用rf.取位址運算子 在給變數賦初值時出現在等號右邊或在執行語句中作為一元運算子出現時 表示取物件的位址.在c 中,既有引用又有取位址,好多人對引用和取位址不...

C中引用 與取位址 的區別

乙個是用來傳值的 乙個是用來獲取首位址的,引用運算子 出現在變數宣告語句中位於變數左邊時,表示宣告的是引用.例如 int reference 宣告乙個int型的引用rf.取位址運算子 在給變數賦初值時出現在等號右邊或在執行語句中作為一元運算子出現時,表示取物件的位址.在c 中,既有引用又有取位址,好...