gpt4 book ai didi

C数组声明和赋值?

转载 作者:行者123 更新时间:2023-11-28 08:34:39 25 4
gpt4 key购买 nike

我在结构 here 上问过类似的问题但我试图弄清楚 C 如何处理诸如分配变量之类的事情,以及如果它们在功能上相同,为什么不允许将它们分配给彼此。

假设我有两个数组:

int x[10];  
int y[10];

为什么 x = y 不能编译?如果它们都是这样的相同“签名”,那么你不应该能够来回分配它们吗?

我能否以允许我在 C 中执行的方式声明这些?对我来说,您能够做到这一点很有意义,但也许有一种方法可以做到这一点?结构的 Typedef 似乎是解决方案,数组声明和赋值是否相同?

非常感谢你们的帮助,我是 Stackoverflow 的新手,但到目前为止它对我来说是一个非常好的资源!

最佳答案

简单地说,数组是不可赋值的。它们是“不可修改的左值”。这当然引出了一个问题:为什么?有关详细信息,请参阅此问题:

Why does C++ support memberwise assignment of arrays within structs, but not generally?

数组不是指针。 x 此处确实指的是数组,尽管在许多情况下这种“衰减”(被隐式转换)指向其第一个元素的指针。同样,y 也是数组的名称,而不是指针。

您可以在结构中进行数组赋值:

struct data {
int arr[10];
};

struct data x = {/* blah */};
struct data y;
y = x;

但是你不能直接用数组来做。使用 memcpy

关于C数组声明和赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59433435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com