可以将结构分配给另一个结构,这会导致将所有值从struct复制到另一个:
struct
{
int a, b, c;
} a, b;
...
a = b;
但是为什么数组不能这样分配:
int a[3], b[3];
...
a = b;
因为严格来说,结构只是具有可变大小元素的数组,所以为什么不允许?无论如何,这种任务尚未使用。当然,似乎只涉及地址,但可以轻松地复制数组(“静态”)。
答案 0 :(得分:8)
引用此answer:
以这样的方式编写C,即在计算数组表达式时计算第一个元素的地址。
这就是为什么你不能做像
这样的事情int a[N], b[N]; a = b;
因为
a
和b
在该上下文中评估指针值;它等同于写3 = 4
。内存中没有任何内容实际上存储数组中第一个元素的地址;编译器只是在翻译阶段计算它 1 。
<子> 1。重点是我的。