c - 初始化多维数组

标签 c arrays

我有一个包含 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/

相关文章:

c - 如何将多个c文件合并到一个共享库中以用于外部函数接口(interface)

c - 文件处理 fprintf 错误

c - Main 无法正确调用函数 "makeArray"

c - 使用 c 安排警报

c - Hive JDBC 连接没有错误或警告

mysql - 持有一个数组

javascript - 如何从单个数组对象中的多个数组对象创建数组?

javascript - 使用 jQuery.ajax post 函数将 javascript 数组中的数据传递到服务器?

c - 32 位整数的二进制表示

Java对象数组错误(卡片)