繁体   English   中英

C ++指针地址说明

[英]C++ pointer address explanation

我是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”的结果不同?

非常感谢。

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

所以, mypointer是地址firstvalue ,并&mypointer是地址mypointer 由于firstvaluemypointer是不同的变量,因此它们具有不同的地址。

查看题写的评论

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

得到它了?

在示例中,&运算符表示“的地址”。 因此,“ mypointer”是值10的地址,而“&mypointer”是值10的地址的地址。

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

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

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM