Tak, w języku C++ rozmiar tablicy musi być wartością stałą.
Jednak w języku C (w standardzie C99) zostały wprowadzone tablice o zmiennej długości (Variable Length Arrays).
int rozmiar;
scanf("%d", &rozmiar);
int tablica[rozmiar];
Niektóre kompilatory C++ pozwalają zastosować ten mechanizm, ale nie jest to zalecane z powodu niezgodności ze standardem.
Być może w przyszłości ten mechanizm zostanie dodany do C++.