我很惊讶地发现下面的代码确实像一个(初学者)所期望的那样(我希望它无法编译或段错误):
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int count = rand() % 1024 + 2;
int arr[count];
arr[count-1] = 3;
for(int i = 0; i < count; ++i)
{
arr[i] = i * 3;
}
printf("%d %d %d", count - 1, arr[0], arr[count-1]);
return 0;
}
令我惊讶的是compiles, and works。
我不知道可以通过使用方括号动态分配数组,这是如何工作的?我预计会出现任何类型的错误,指出在C中不允许或不允许使用[]
进行动态分配。
这是如何运作的?