2014-07-15 162 views
0

我新的C++和我有這樣一段代碼:C++指針地址解釋

int firstvalue=10; 
int * mypointer; 
mypointer = &firstvalue; 
cout << "pointer is " << *mypointer << '\n'; 
cout << "pointer is " << mypointer << '\n'; 
cout << "pointer is " << &mypointer << '\n'; 

結果是:

pointer is 10 
pointer is 0x7ffff8073cb4 
pointer is 0x7ffff8073cb8 

任何人都可以向我解釋爲什麼「的結果mypointer「和」& mypointer「是不同的?

非常感謝。

+0

'mypointer'也是一個變量,所以它有自己的地址... –

回答

8
  • mypointer是變量mypointer。由於您的分配,該值爲firstvalue的地址。
  • &mypointer是變量mypointer地址。那就是,地址mypointer

所以,mypointerfirstvalue地址,&mypointermypointer地址。由於firstvaluemypointer是不同的變量,因此它們具有不同的地址。

1

在這個例子中,&運算符的意思是「地址」。因此,「mypointer」是值10的地址,但「& mypointer」時,其值是10

2

見題寫評論

int firstvalue=10; // first variable, stored at say location 2000, so &firstvalue is 2000 
int * mypointer; // second variable, stored at say location 2004, so &mypointer is 2004 
mypointer = &firstvalue; // mypointer had garbage, now has 2000 
cout << "pointer is " << *mypointer << '\n'; // contents of mypointer i.e. firstvalue (10) 
cout << "pointer is " << mypointer << '\n'; // value of mypointer i.e. 2000 
cout << "pointer is " << &mypointer << '\n'; // address of mypointer i.e. 2004 

得到它的地址的地址?

1

firstvalue是一個變量,它可以容納一個int類型的值。這個變量有自己的地址0x7ffff8073cb4

myvariable是一個(指針)變量,它可以容納一個int *類型值,即可以容納int類型值的變量的地址。這個變量有自己的地址0x7ffff8073cb8

enter image description here