动态方括号数组初始化如何在C中工作?

时间:2018-04-09 08:18:41

标签: c dynamic-memory-allocation

我很惊讶地发现下面的代码确实像一个(初学者)所期望的那样(我希望它无法编译或段错误):

#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中不允许或不允许使用[]进行动态分配。

这是如何运作的?

0 个答案:

没有答案