为什么我得到的是内存地址而不是实际值?指针c++


int x = 2;
int y=8;
int* p = &x; 
*p=y;
cout << p <<endl;

我的问题是:为什么我打印p时得到的是内存地址,而不是实际值,因为我已经在第4行中取消了引用

cout << *p << endl;

就是你所需要的。当您尝试将某个内容输出到stdout时,编译器会自动推断其类型并调用相应的函数。在您的情况下,p是指针类型,因此会打印地址,并且由于*p是int类型,如果要打印值,则应该使用*p。

我认为您对取消引用指针有误解。

。。。因为我已经在第4行中取消了引用

取消引用意味着检索指针所指向的值。它不会以任何方式更改指针本身。CCD_ 1仍然是在CCD_ 2之后的指针。

*p=y所做的只是更改p所指向的值,而不是更改指针本身。

最新更新