我有一个包含 double
的 4x4 数组的矩阵:
typedef struct {
double data[4][4];
} mat;
在这里我声明我的mat
mat m1;
我想用零初始化我的mat
:
double data[4][4] = { { 0,0,0,0 },{ 0,0,0,0 },{ 0,0,0,0 },{ 0,0,0,0 } };
MAT_A.data = data;
出现这个错误:
expression must be a modifiable lvalue
和:
'=': left operand must be l-value
我也试过这个:
MAT_A->data = data;
编辑:
另一个问题是如何启动mat
?
最佳答案
问题是您不能将数组分配给结构,也不能将数组分配给数组。 C 语法不允许这样做。
如果你想初始化一个变量,你不应该使用赋值。这些是不同的东西; MAT_A.data = data;
是赋值。这是初始化:
mat m =
{
.data = { { 0,0,0,0 },{ 0,0,0,0 },{ 0,0,0,0 },{ 0,0,0,0 } }
};
至于赋值,你可以做的是将结构分配给结构,例如使用复合文字:
m = (mat)
{
.data = { { 0,0,0,0 },{ 0,0,0,0 },{ 0,0,0,0 },{ 0,0,0,0 } }
};
关于c - 初始化多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47926028/