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 };

这个没有语法吗?我必须使用一个带索引的循环来实现这个吗?

最佳答案

在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));

关于c - 如何复制和分配数组数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34278862/

10-13 00:53