[英]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
。 由于firstvalue
和mypointer
是不同的变量,因此它们具有不同的地址。
查看题写的评论
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.