C - 使用 malloc 创建一个数组,然后循环遍历它

标签 c arrays loops pointers malloc

我正在学习 C 并尝试编写此函数

int *create_matrix(int n) {
   int *matrix = malloc(n*n*sizeof(int));
   srand(time(NULL));
   int i, j;
   for (i = 0; i < n; i++) {
      for (j = 0; j < n; j++) {
        matrix[i][j] = rand()%10;
      }
   }
   return matrix;
}

为什么编译失败?它提示 matrix[i][j] 不是指针/数组。但我刚刚将其声明为上面六行的指针...

最佳答案

它是一维数组,因此您必须将其视为一维数组,而不是二维数组。

当然,您仍然可以在其中存储您的 n x n 元素:

    matrix[i * n + j] = rand() % 10;

如果您愿意,可以按照 How do I work with dynamic multi-dimensional arrays in C? 中给出的建议设置二维结构。

顺便说一下,您可能不希望每次创建矩阵时都调用 srand()。如果您快速连续两次调用 create_matrix(),您最终可能会得到相同的“随机”矩阵。在程序开始时调用一次 srand()

关于C - 使用 malloc 创建一个数组,然后循环遍历它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26381258/

相关文章:

java - Java中按特定字符分割字符串,返回一条消息需要分割的次数

javascript - 在 Javascript 中过滤 foreach 索引值

c - 递归结构的大小是多少?

c - 使用 fbo 和纹理的离屏渲染得到黑屏

c - 链表实现差异

C 单行多个操作

jQuery 相当于 underscore.js 的 groupBy

javascript - 在javascript中查找数组中的数组

javascript - 字符串中整数的总和 - JS

linux - 文本文件中的单引号完整路径文件无法执行 for 循环处理 mv : cannot stat . .. 没有这样的文件或目录