c++ 为什么错?

来源:百度知道 编辑:UC知道 时间:2024/05/27 04:39:07
#include<iostream>
using namespace std;
int main(){
int *p1,*p2,m=1,n;
p1=&m;p2=&p1;
cout<<p2<<endl;
return 0;
}
为什么错了 把指针p1操作对象的地址赋给p2啊??
麻烦为菜鸟解释清楚 谢谢

因为你的p2是指向指针的指针,所以声明的时候应该用 int** p2;
而如果你要使用p2指向m的话,应该使用 p2 = p1;

p1=&m;p2=&p1;
&p1为取地址,但p1本身是一个指针。应为这样p1=&m;p2=p1;吧
试试

p2=p1就行,p1是指针不要加取地址号……

只需要把p2=&p1;中的&去掉即可,两个指针之间赋值不需要取地址操作符,直接赋值即可。
#include<iostream>
using namespace std;
int main(){
int *p1,*p2,m=1,n;
p1=&m;p2=p1;
cout<<p2<<endl;
return 0;
}

p1是个指针变量,它的内容是存放m的地址,但是p1本身也是有单独的内存空间,它也是有地址的!你把p1的地址赋给p2,那p2存放的只是p1的地址,而不是m!
你直接p2=p1,这样不就是把p1的内容给p2了吗?

p2=&p1
这句错了..
改成p2= p1;