Witam mam rozterkę. Z tego co mi wiadomo rozmiar tablicy musi być znany w trakcie kompilacji.
Zatem czy taki zapis jest poprawny? Czy może "działa", ale nie jest zbyt lubiany wśród programistów?
int n;
cin >> n;
int tab[n];
Witam mam rozterkę. Z tego co mi wiadomo rozmiar tablicy musi być znany w trakcie kompilacji.
Zatem czy taki zapis jest poprawny? Czy może "działa", ale nie jest zbyt lubiany wśród programistów?
int n;
cin >> n;
int tab[n];
Jeden ze standardów to akceptuje.
Ale skoro używasz C++ to czemu nie możesz zamienić to na:
vector<int> tab(n);
Używasz tak jak tego tab
którego ty zadeklarowałeś, ale ma to znacznie więcej możliwości.
Wiem o wektorach, ale byłem ciekawy czy jest to poprawny sposób. Wielkie dzięki o to mi chodziło :)
Zatem czy taki zapis jest poprawny?
Zależy co rozumiesz przez „poprawny”.
Jest poprawny w standardzie C99, ale to C a nie C++.
Będzie poprawny w standardzie C++14 — chyba że coś się zmieni, bo tego standardu jeszcze nie ma.
W międzyczasie, niektóre kompilatory (GCC i Clang) pozwalają na coś takiego zarówno w C jak i w C++.
Pamiętaj że późniejsza zmiana n
, np.
int tab[n];
n++;
nie powoduje zmiany rozmiaru tablicy. Tablica pozostaje o takim rozmiarze, jaki nadano w momencie definicji zmiennej.