一个C/C++问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 12:22:23
有一个关于C/C++的问题,请教一下:在结构中有数组成员,为什么当两个结构变量赋值时,数组成员能够赋值。而当两个一般的数组赋值时,不能够直接赋?
二楼的兄弟说结构中的指针不能赋值,那么下面的例子又如何解释?
#include<iostream>
using namespace std;
int main()
{
struct val
{
char *pt;
int a;
};
val m={"linyu",10};
cout<<(int *)m.pt<<" "<<m.a<<endl;
val n={"linhan",20};
cout<<(int *)n.pt<<" "<<n.a<<endl;

n=m;
cout<<(int *)m.pt<<" "<<m.a<<endl;
cout<<(int *)n.pt<<" "<<n.a<<endl;
}
我记得结构变量是可以这样做的(n=m)

结构赋值时如果没有缺省构造函数将采用按位拷贝方式赋值,所以结构中的数组能赋值, 但结构中的指针不行. 而一般的数组因为是内部类型没有这种方式.

我说的指针不能赋值是指不能拷贝,你上面的n=m;时按位拷贝,把m.pt所指向的地址给n.pt,这时m.pt和n.pt都指向"linyu",显然这不是赋值操作, 因为删除m.pt时, n.pt也同时被删除了

不知所云,数组不能赋值??

n=m;你这样做是不对,你要写一个拷贝构造函数。
你要注意你的 char *pt; 是指针。就这样你想想吧。