看來,我有一個關於指針誤解,誤解指點一下C++
這裏有一個例子:(代碼可能無法編譯,是不同的PC上)
#include <iostream>
struct Debris{
long big_data;
//code
};
struct Explosion{
Debris *db;
//code
};
void test(){
Debris *db = new Debris();
db->big_data = 10000;
Explosion *e1 = new Explosion();
e1->db = db;
std::cout << "db addr:" << db <<"db value:"<< ++db->big_data <<<="" "explosion's="" db="" addr:"="" e1-="">db << "explosion's db value:" << e1->db->big_data << std::endl;
//why db and e1->db have different addresses?
//but the e1->db->big_data is changed by ref.
}
能否請您解釋一下嗎?提前致謝。
你的問題似乎是不夠精確。你能解釋一下你究竟有什麼麻煩理解嗎? – atomicinf 2012-07-27 16:15:13
爲什麼''''''db',因此改變指針? – 2012-07-27 16:15:58
沒關係,事實證明,這隻會是一個問題,如果你使用後增量運算符,而不是預增量。不過,看起來仍然很奇怪。 – 2012-07-27 16:19:57