考慮這個C++程序中的地址之間的C++:衝突指針的地址,並存儲在指針
#include<iostream>
using namespace std;
int main() {
int x = 7;
int *ip = &x;
cout << "the value of x is " << x <<endl;
cout << "the address of x is " << &x <<endl;
cout << "the address stored at ip is "<< ip <<endl;
return 0;
}
這是我得到的輸出:
the value of x is 7
the address of x is 0x28ff08
the address stored at the pointer is 0x28ff08
這對我來說很有意義。但是,如果我的代碼更改爲以下,我得到不同的輸出:
#include<iostream>
using namespace std;
int main() {
int x = 7;
int *ip = &x;
cout << "the value of x is " << x <<endl;
cout << "the address of x is " << &x <<endl;
cout << "the address of the ip itself is "<< &ip <<endl;
return 0;
}
現在,我得到這樣的輸出:
the value of x is 7
the address of x is 0x28ff0c
the address of the ip itself is 0x28ff08
在第一個代碼,地址變量x
和存儲在指針ip
處的地址是相同的,這對我很有意義。但在第二個程序中,ip
本身的地址保持不變,但地址x
似乎正在改變,這讓我感到困惑。我期望變量x
的地址與第一個程序中的地址和指針的地址保持不變。
有人可以解釋這裏發生了什麼嗎?
a)你爲什麼期望這樣做?b)你爲什麼會在意開始? –
我真的不明白問題所在。你可以在問題中包含輸出,而不僅僅是截圖,也可以突出顯示你期望的相同/不同的地址? – user463035818
您是否期望第二個片段中'x'的地址與第一個片段中'x'的地址相同?如果是,爲什麼?當你運行相同的代碼兩次時,你甚至不能指望'x'被存儲在同一個內存中 – user463035818