C语言中的动态数组和变长数组的区别

2025-04-03 22:58:46
推荐回答(1个)
回答1:

动态数组的内存空间是从堆(heap)上分配(即动态分配)的。是通过执行代码而为其分配存储空间。当程序执行到这些语句时,才为其分配。程序员自己负责释放内存。
int *p = (int *)malloc(5*sizeof(int));
这就相当于 int p[5];

变长数组
C语言中,直到C99标准出现之前,声明数组时在方括号内只能使用整数常量表达式。而C99做了很大改进,允许数组的[ ]中的值是整形变量或是整形表达式。这就解释了下面的情况:

int n;

scanf ("%d", &n);

int array[n];