我是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;是不同的?
非常感谢。
答案 0 :(得分:8)
mypointer
是变量mypointer
的值。由于您的分配,该值是firstvalue
。&mypointer
是变量mypointer
的地址。也就是mypointer
。因此,mypointer
是firstvalue
的地址,&mypointer
是mypointer
的地址。由于firstvalue
和mypointer
是不同的变量,因此它们具有不同的地址。
答案 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
。