Czy poprawny jest taki "myk" do inicjalizowania n-elementowych tablic w c++ (prosiłbym jednak o ocenę tylko tego pomysłu - zalet i wad - bez odwoływania się np. do tablic dynamicznych):
- jest poprawny w standardzie C99, ale język C to nie C++
- nie jest poprawny według standardu C++ (ani obecnego ani najbliższego nowego)
- jest to obsługiwane przez kompilator gcc, zarówno w trybie C jak i C++
zalety:
· fajne, prostsze od new/delete, nie trzeba pamiętać o zwalnianiu tej pamięci
· tablica jest zmienną lokalną, na stosie — ginie automatycznie po wyjściu z funkcji
wady
· nie można w ten sposób definiować tablicy globalnej
· nie można za pomocą goto
przeskoczyć „ponad” definicją takiej tablicy (ale goto i tak się prawie nie używa)
· nie można zmieniać rozmiaru tej tablicy (ale oczywiście za każdym wejściem do funkcji można podawać inny rozmiar)
· nie wszystkie kompilatory to obsługują
Poza tym taka tablica będzie widziana tylko wewnątrz tej jednej funkcji, co też niewiele ci daje.
ale można ją przekazać jako parametr do innej funkcji, i będzie tam widziana jako zwykła tablica (lub wskaźnik):
void foo()
{
int n = 10;
int tab[n];
bar(tab,n); // tablicę można przekazać jako parametr
// ale nie można jej zwrócić z funkcji
}
void bar(int tablica[], int rozmiar) // lub int *tablica
{
// ...
}
więc jej rozmiar jest bardzo mocno ograniczony.
Nie aż tak „bardzo mocno”, nie zawsze potrzebujemy tablic o wielkości rzędu megabajtów albo większych.