gpt4 book ai didi

c - 在 C 结构中初始化矩阵变量

转载 作者:太空宇宙 更新时间:2023-11-03 23:37:28 25 4
gpt4 key购买 nike

我有一个结构如下:

struct transform {
double A[4][4];
};

知道我可以像这样初始化整个结构:

struct transform myTransform;
myTransform = (struct transform){{{0, 0, 0, 0},{0, 0, 0, 0},{0, 0, 0, 0},{0, 0, 0, 0}}};

但是为什么我不能做下面的事情呢?

struct transform secondTransform;
secondTransform.A = {{0, 0, 0, 0},{0, 0, 0, 0},{0, 0, 0, 0},{0, 0, 0, 0}};

我的逻辑是有道理的。我只是扩展了与以前相同的逻辑,但只在我的结构中初始化了 A 矩阵,但我收到了一个不明确的 Expected expression 错误。

我问的原因是,我的项目中有一个比这更复杂的结构,我想专门初始化该结构中的元素而不是整个结构。

编辑:我正在为我的项目使用 C99 标准。

最佳答案

您遇到的问题是第一种情况是初始化,而第二种情况是赋值,您不能赋值给数组。

然而,您可以在不显式初始化所有成员的情况下初始化结构。这是通过指定的初始化程序完成的。

struct transform {
double A[4][4];
int b;
char *c;
};

struct transform t = { .A = {{0, 0, 0, 0},{0, 0, 0, 0},{0, 0, 0, 0},{0, 0, 0, 0}}, .b = 5 };

任何未显式初始化的字段都根据类型隐式初始化为 0 或 NULL。

关于c - 在 C 结构中初始化矩阵变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55436753/

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