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

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

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

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

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

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

引用这个答案 :

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

就是为什么你不能做的事情

 int a[N], b[N]; a = b; 

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


1.重点是我的。