Kap*_*chu 14 c c++ arrays struct copy-assignment
可以将结构分配给另一个,这会导致将所有值从struct复制到另一个:
struct
{
int a, b, c;
} a, b;
...
a = b;
Run Code Online (Sandbox Code Playgroud)
但为什么数组不能像这样分配:
int a[3], b[3];
...
a = b;
Run Code Online (Sandbox Code Playgroud)
因为,严格来说,结构只是具有可变大小元素的数组,那么为什么不允许这样呢?无论如何,这种任务尚未使用.当然,似乎只涉及地址,但可以轻松地复制数组("静态").
引用这个答案:
以这样的方式编写C,即在计算数组表达式时计算第一个元素的地址.
这就是为什么你不能做的事情
Run Code Online (Sandbox Code Playgroud)int a[N], b[N]; a = b;因为这两个
a并且在该上下文中b评估指针值 ; 它相当于写作3 = 4.内存中没有任何内容实际存储数组中第一个元素的地址; 编译器只是在翻译阶段1中计算它.
1.重点是我的.