[英]reference in c++ confusion
#include <iostream>
using namespace std;
int main()
{
int i=9,k=8;
int &q=i;
q=k;
cout<<i<<"\n"<<q<<"\n";
return 0;
}
輸出:
8
8
但是在我的書中給出“q = k僅改變i的值而不改變q。這是因為作為參考的q被自動解除引用為(* q)。因此,q中存儲的地址處的值被替換按值i“但是你可以看到q的值也會改變。 不是嗎???
q
,作為參考,不會改變。 換句話說,它指的是i
, 永遠 ,永遠和永遠(直到它超出范圍)。 你不能讓q
引用不同的對象。 這就是“它的價值[原文如此?]從未改變的意思”。 q
的“價值”是i
的地址。 當你在那里分配q
時,你真的要分配給i
。
你打印出來的是i
的值,然后是q
引用的對象的值(即i
)。
由於q
是參照i
,這意味着它只是一個別名i
(其他名稱到i
)。
所以無論i
有什么價值, q
都會有!
初始化參考時如下
int i = 9;
int &q =i;
q只是becom的另一個別名(你可以說是昵稱),所以如果在q中發生任何變化,它也會反映在i中,反之亦然。
初始化變量時:
int&q = i;
每次你改變我,你改變q和反之亦然。
q的引用具有相同的i值,因此主題指向相同的內存位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.