Tablica z określaniem wielkości podczas wykonywania programu

0

Witam.
Do napisania programu potrzebuje stworzenia tablicy, która będzie składała się z n elementów, która zostanie określona podczas wykonywania programu przez użytkownika. Wiem, że nie można tego zrobić w zwykły sposób, bo tablica musi mieć określoną wielkość podczas kompilacji. Szukając w internecie dogrzebałem się do dwóch sposobów: tkz. tablica dynamiczna, o której wiem tylko tyle, że korzysta ona z wskaźników i możną ją zapisać w ten sposób:

int* tab=new int[ilosc]; 
delete []tab;

oraz sposób, który wygląda następująco:

cout <<"Podaj liczbe: "; 
int jakas_liczba;
 cin >>jakas_liczba; 
cin.ignore();
int jakas_tablica[jakas_liczba];

Czy mógłby mi ktoś wytłumaczyć o co chodzi z tymi tablicami dynamicznymi (jak to działa jakiś przykład podać z tym int* tab new[n]..) oraz powiedzieć, który sposób jest lepszy? (a propos drugiego sposobu: Mam pewne wątpliwości, co do akceptowania tego skryptu przez różne kompilatory. Czy korzystając z tego sposobu mam pewność, że nie tylko u mnie to zadziała, a inny kompilator nie wywali błędu?)
Pozdrawiam compl

0

Tak jak pokazałeś w sposobie drugim to się tego nie robi chociaż fakt przez niektóre kompilatory przechodzi. A co do sposobu pierwszego to jest on jak najbardziej poprawny i zawsze działa. Z tego co wiem to pisząc fragment "int *tab" odpowiada za ustawienie wskaźnika intów gdzieś w pamięci, zaś operatorem '"new" alokujesz pamięć dynamicznie czyli "new typ [ilosc]". Oczywiście polecam pierwszy sposób;) Delete jest do zwalniania pamięci zaalokowanej dynamicznie, warto ją zwolnić jeśli nie korzystasz już z tablicy, aby nie dopuścić do wycieku pamięci

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