我知道不支持数组的成员分配,因此下面的方法不起作用:
int num1[3] = {1,2,3};
int num2[3];
num2 = num1; // "error: invalid array assignment"
我只是接受了这个事实,认为该语言的目的是提供一个开放式框架,并让用户决定如何实现某些东西,比如数组的复制。
不过,以下措施确实有效:
struct myStruct { int num[3]; };
struct myStruct struct1 = {{1,2,3}};
struct myStruct struct2;
struct2 = struct1;
数组 num[3]
以成员方式从它在 struct1
中的实例分配到它在 struct2
中的实例中。
为什么结构支持按成员分配数组,但通常不支持?
编辑 : 线程 Struct 中的字符串-复制/赋值问题?中 Roger Pate的注释似乎指向了答案的大致方向,但我自己并不知道该如何确认。
编辑2 : 许多优秀的回答。我选择 Luther Blissett是因为我主要想知道这种行为背后的哲学或历史原理,但是 James McNellis对相关规范文档的参考也很有用。