为什么数组不能在C / C ++中赋值?

时间:2014-08-10 16:30:57

标签: c++ c arrays struct copy-assignment

可以将结构分配给另一个结构,这会导致将所有值从struct复制到另一个:

struct
{
    int a, b, c;
} a, b;

...
a = b;

但是为什么数组不能这样分配:

int a[3], b[3];
...
a = b;

因为严格来说,结构只是具有可变大小元素的数组,所以为什么不允许?无论如何,这种任务尚未使用。当然,似乎只涉及地址,但可以轻松地复制数组(“静态”)。

1 个答案:

答案 0 :(得分:8)

引用此answer

以这样的方式编写C,即在计算数组表达式时计算第一个元素的地址。

  

这就是为什么你不能做像

这样的事情
int a[N], b[N];
a = b;
     

因为ab在该上下文中评估指针;它等同于写3 = 4。内存中没有任何内容实际上存储数组中第一个元素的地址;编译器只是在翻译阶段计算它 1


<子> 1。重点是我的。