结构体赋值的问题 结构体的指针能不能直接赋值给一个结构体

struct a{};
a*temp=new a[];
a exa[4];
temp=exa[0];
temp+1=exa[1];
```
请问能不能这样赋值?
结构体不是可以直接赋值吗?而且机构体名就是地址,指针也是地址?为什么我这编译不过去 说无法从“a”转化为“a*”?这是怎么回事?详细讲一下吧 谢谢了

这是因为你把一个结构体的对象赋给了一个指针类型的。当然会报错了,所以你应该改一下,
for(int i = 0;i<4;i++)
temp++=exa++;追问

我怎么能把temp 也改成结构体对象?用&失了一下说 &要求左值 这是怎么回事?

追答

没太明白你的意思,自己试一下,然后多思考一下,学习要靠自己动脑子。
你说的是
a temp;
temp =&a;
这样吗?
temp =a[0]肯定可以的呀。

追问

a*temp=new a[];
a exa;
&exa=temp;这样为什么也不行?说&要求左值 exa表示的是第一个的地址吧 加上&是不是可以理解成第一个的对象 ; 可是temp其实也是个地址啊 我总觉得把temp(本质是地址)赋给一个指针变量没问题的 而且这时候“=”没有被重载吗?

追答

&exa是取一个地址,取完了地址当然得把地址放在一个地方啦。
a只是个变量,不是指针。取了地址也只是址,不是指针。不明白你这样做的意图。没这么用过。

追问

哈哈 刚才说错了····基础不扎实····我本来是想用的间接引用符* 结果用成了取地址···现在好了
我在指针前边加了* 就可以直接将结构变量赋给指针所指的对象了

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-11
汗!!!!!追问

你能说 机构体变量的之间的相互赋值 比如 struct temp; temp a,b; a=b;这句是将b的地址赋给a吗?这里面难道没有操作符重载?

相似回答