Я был очень удивлен, обнаружив, что следующий код работает так, как и ожидал бы один (новичок) (ну, я ожидал, что он либо не скомпилируется, либо segfault):
#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;
}
К моему удивлению, это компилируется и работает.
Я не знал, что можно динамически выделить массив с помощью квадратных скобок, как это работает? Я ожидал какой-либо ошибки, указывающей, что динамическое выделение с использованием []
не разрешено или невозможно в C.
Как это работает?
allocate an array by using square brackets, how does this work?
- person harper   schedule 09.04.2018