C ++指针地址解释

时间:2014-07-15 10:50:19

标签: c++ pointers

我是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

任何人都可以向我解释为什么&#34; mypointer&#34;和&#34;&amp; mypointer&#34;是不同的?

非常感谢。

4 个答案:

答案 0 :(得分:8)

  • mypointer是变量mypointer。由于您的分配,该值是firstvalue
  • 的地址
  • &mypointer是变量mypointer地址。也就是mypointer
  • 的地址

因此,mypointerfirstvalue的地址,&mypointermypointer的地址。由于firstvaluemypointer是不同的变量,因此它们具有不同的地址。

答案 1 :(得分: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

得到了吗?

答案 2 :(得分:1)

在示例中,&amp;运营商的意思是“地址”。因此,“mypointer”是值10的地址,但“&amp; mypointer”是地址的地址,其值为10.

答案 3 :(得分:1)

firstvalue是一个可以保存int类型值的变量。此变量具有自己的地址0x7ffff8073cb4

myvariable是一个(指针)变量,它可以保存一个int *类型的值,即一个可以保存int类型值的变量的地址。此变量具有自己的地址0x7ffff8073cb8

enter image description here