Podawanie rozmiaru tablicy

0

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];
2

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.

0

Wiem o wektorach, ale byłem ciekawy czy jest to poprawny sposób. Wielkie dzięki o to mi chodziło :)

1

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1