2014-02-25 102 views
-4
int a = 1; 
int b = 2; 
int* c = &a; 
int* d = &b; 
c = d; 
*d = 3; 
cout << a << " " << b; 

很簡單,我不明白* d = 3是如何使b = 3。我認爲d需要等於b的地址才能這樣做?我很難理解此代碼

+4

d確實等於b的地址。 – Sneftel

+4

您認爲'int * d =&b;'行有什麼作用? ;) –

+0

@OliCharlesworth我以爲它指向b的地址,所以如果我輸出* d它會給我b的地址。 – Pipsydoodles

回答

1

無關的分歧放在一邊,這

int* d = &b; 

只是這個

int* d; 
d = &b; 

較短的形式之後d包含b地址。即db的地址。 d沒有「指向地址」b,它的的地址b

現在*d相當於b。你對*d所做的一切都會發生在b