int zero[5][4] = {
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
};
int m1[5][4] = {
{ 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 }
};
//errors here
m1 = zero;
m1 = { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } };
m1[0] = { 0, 0, 0, 0 };
这没有语法吗?我是否必须使用带索引的循环来实现此目的?
答案 0 :(得分:4)
在C中,数组不可分配或不能在赋值(=
)运算符的左侧。使用memcpy
。
memcpy(m1, zero, sizeof(zero)); // Assuming size of 'm1' is no less than the size of 'zero'
您可以使用memset
设置一个具有常量值的数组,例如0
或-1
memset(m1, 0, sizeof(m1));