Witam.
Chciałbym się spytać dlaczego ten program się kompiluje (kompilator g++)?
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int* tab[n];
return 0;
}
Teoretycznie kompilator musi wiedzieć już na początku jaką wielkość ma tablica. Poza tym kiedyś miałem taki problem i doszedłem do wniosku, że trzeba dynamicznie alokować pamięć, żeby było prawidłowo.
int* tab = new int[n];
Teraz patrze, a ten pierwszy program się kompiluje, choć nie powinien. Czy to oznacza, że jednak taki zapis (bez dynamicznej alokacji) też jest poprawny, czy ten kompilator po prostu takie coś przepuścił, a drugi już do tego nie dopuści i wywali błąd?