Mit*_*rax 15 c arrays variable-assignment
我问过的结构类似的问题在这里,但我试图找出ç如何处理像变量赋值的东西,为什么不允许将它们分配到海誓山盟,如果他们在功能上是相同的.
可以说我有两个数组:
int x[10];
int y[10];
Run Code Online (Sandbox Code Playgroud)
为什么x = y不能编译?如果它们都是相同的"签名",那么你不应该来回分配它们吗?
我是否可以通过允许我在C中执行此操作的方式声明这些内容?你能够做到这一点对我有意义,但也许有办法可以做到这一点?结构的Typedef似乎是解决方案,它对于数组声明和赋值是否相同?
我感谢你们的帮助,我是Stackoverflow的新手,但到目前为止它对我来说是一个非常好的资源!
小智 24
简单地说,数组不可分配.它们是"不可修改的左值".这当然引出了一个问题:为什么?有关更多信息,请参阅此问题:
数组不是指针. x
这里确实引用了一个数组,尽管在很多情况下这会"衰减"(被隐式转换)到指向其第一个元素的指针.同样,y
数组的名称也是指针.
你可以在结构中进行数组赋值:
struct data {
int arr[10];
};
struct data x = {/* blah */};
struct data y;
y = x;
Run Code Online (Sandbox Code Playgroud)
但你无法直接使用数组.使用memcpy
.