小编can*_*ife的帖子

理解 C 中的内存分配有点困难

所以我正在学习如何用 C 语言编程,并开始学习动态内存分配。我所知道的是,您的程序并非总是知道它在运行时需要多少内存。

我有这个代码:

#include <stdio.h>

int main() {
   int r, c, i, j;
   printf("Rows?\n");
   scanf("%d", &r);
   printf("Columns?\n");
   scanf("%d", &c);

   int array[r][c];
   for (i = 0; i < r; i++)
      for (j = 0; j < c; j++)
         array[i][j] = rand() % 100 + 1;

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我想创建一个二维数组,我只需声明一个并将数字放在括号中即可。但在这段代码中,我询问用户他们想要多少行和列,然后用这些变量声明一个数组,然后用随机整数填充行和列。

所以我的问题是:为什么我不必使用像malloc这里这样的东西?我的代码不知道在运行时要放入多少行和列,那么为什么我可以使用当前代码访问该数组?

c malloc memory-management dynamic-memory-allocation

4
推荐指数
1
解决办法
212
查看次数