【发布时间】:2018-12-20 15:33:29
【问题描述】:
我写了以下c-coden-p:
#include <stdio.h>
void function(int size){
int array[size];
for(int i = 0; i < size; i++){
printf("%d ", array[i]);
}
}
int main(){
int array_size;
scanf("%d",&array_size);
function(array_size);
return 0;
}
为什么可以通过这种方式生成动态大小的数组。通常我会使用 malloc,但这也可以。为什么数组的大小可以使用非常数变量size?
【问题讨论】:
-
您没有初始化数组成员。编译器可能会一起忽略/删除它。它被称为未定义的行为。
-
这可能与
alloca()函数的工作方式非常相似。分配数组只需调整当前堆栈指针以为动态大小的数组腾出空间。释放在函数退出时自动发生。