Tablica z określaniem wielkości podczas wykonywania programu

Tablica z określaniem wielkości podczas wykonywania programu
CO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 31
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:

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

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

Kopiuj
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

PO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 211
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.