我无法理解可变大小数组的工作原理,它的内存是分配在堆栈上还是其他地方,以及如何获得有关其大小的信息。
我尝试了以下代码
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int arr[n];
printf("%d\n",sizeof(arr));
return 0;
}
我的意思是我的内存是在堆栈上分配的,然后在运行这个函数之前,要分配堆栈帧,并且必须为局部变量分配内存,但是在函数调用 scanf() 之后数组的大小是已知的。