c - 如何复制和分配数组数组?

标签 c arrays

  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/

相关文章:

c++ - c/c++ 指向数组的指针与指向指针的指针

php - 如何用子数组(混合类型)记录数组?

javascript - 为什么我得到索引二的返回值?

python - 类型错误 : return arrays must be of ArrayType for a function that uses only floats

c - 有没有办法告诉C永远不要动态分配内存?

Cygwin gcc编译错误

c - 特定时间的 sem_timedwait()

c - 使用 strtok 多次分割一个字符串会导致意外行为

c - 无法运行此代码仍然没有显示错误?

使用指针检查字符数组中的数字,在 c 中给出错误,给出运行时错误