gpt4 book ai didi

c - 为什么我们不能在 C 中多次初始化结构?

转载 作者:行者123 更新时间:2023-12-02 06:32:58 25 4
gpt4 key购买 nike

为什么这在 C 中是非法的?将 p 重新初始化到不同的位置有什么问题?通过单独更改字段值可以达到相同的效果,所以我不明白为什么不能在 p = {1, 2} 的情况下一步完成。

struct posn {
int x;
int y;
};

int main() {
struct posn p = {3, 4};
p = {1, 2}; //Causes error
// must do p.x = 1; p.y = 2;
return 0;
}

最佳答案

这就是指定语言的方式。

为了与 C 的一般设计保持一致,为了允许 p = {1, 2}{1, 2} 必须是一个表达式。但是是什么类型的呢?它可以是 int[2],或者 struct { int a;短裤; },或者很多其他的东西。

在 C99 中,可以使用复合文字,它明确提及类型(从而解决了如何确定类型的问题),括号中的类型名称后跟 {} 括号:

p = (struct posn){1, 2};

关于c - 为什么我们不能在 C 中多次初始化结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28797055/

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