нее значение с экрана
                  
                  
                  scanf(“%d”, &n);
                  
                  
                  Далее создаю массив длинной n которую я только что отсканировал
                  
                  
                  Int data[n]
                  
                  
                  
                  
                  
                  ну и дальше его заполняю значениями
                  
                  
                  
                  
                  
                  все работает, но имеются вопросики.
                  
                  
                  
                  
                  
                  1. Какое место под массив мне выделит компиллятор?
                  
                  
                  2. Смогу ли я сэкономить байты памяти таким образом(чем например когда я задаю массив заведомо больше)
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  то есть по сути хочу реализовать программу с динамической длинной массива не используя динамическую память
                  
                  
                  
                  
                  
                  Я предполагаю что программа работает сверху вниз и выделит под массив столько место сколько я укажу в сканф для переменной n
                  
                  
                  
                  
                  
                  
                  
                  
                  int main() {
                  
                  
                      int n;
                  
                  
                      int scn = scanf("%d", &n)
                  
                  
                      int data[n];
                  
                  
                      input2(data, &n);
                  
                  
                
Это плохой подход, память для этого массива выделяется на стеке, что несёт побочные эффекты
Компилятор не должен нисколько выделить, выделение происходит в рантайме, компилятор не может контролировать стек
У тебя стек около 1МБ на компах и по 4КБ на микроконтроллерах
Это в си называется VLA (Variable Length Array), прочитайте в интернете детали про эту фичу и почему она не рекомендуется. Если вкратце - с ней слишком легко убить стек.
+ Вроде же VLA нету в С++?
Обсуждают сегодня