Я написал программу на C, которая принимает целочисленный ввод от пользователя, который используется как размер целочисленного массива, и используя это значение, он объявляет массив заданного размера, и я подтверждаю его, проверяя размер массив.
код:
#include <stdio.h>
int main(int argc, char const *argv[])
{
int n;
scanf("%d",&n);
int k[n];
printf("%ld",sizeof(k));
return 0;
}
и удивительно верно! Программа способна создать массив требуемого размера.
Но все статическое распределение памяти выполняется во время компиляции, а во время компиляции значение n
неизвестно, так как же компилятор может выделить память требуемого размера?
Если мы можем выделить требуемую память так же, как это, то зачем использовать динамическое размещение с помощью malloc()
и calloc()
?