Zachodniopomorskie Centrum Edukacyjne Zadanie domowe
Zachodniopomorskie Centrum Edukacyjne Dynamiczna alokacja pamięci
Zachodniopomorskie Centrum Edukacyjne Ciekawa funkcja – stawiamy problem Jak spowodować aby funkcja zwróciła kilka wartości naraz? int main(int argc, char* argv[]) { int liczba_zmiennych = 3; int *wsk; wsk = wprowadz_dane(liczba_zmiennych); for(int i=0;i<liczba_zmiennych;i++) cout<<wsk[i]; system("pause"); return 0; } zm1 zm2 zm3 wsk wsk[0] wsk[1] wsk[2]
Zachodniopomorskie Centrum Edukacyjne Rozwiązanie zm1 zm2 zm3 wsk wsk[0] wsk[1] wsk[2] int * wprowadz_dane(int l_z){ int *t = new int[l_z]; int *tmp = t; for(int i=0;i<l_z;i++) { cin>>*t++; } return tmp; }
Zachodniopomorskie Centrum Edukacyjne Co daje alokacja pamięci Mając styczność z tablicami można się zastanowić, czy nie dałoby się mieć tablic, których rozmiar dostosowuje się do naszych potrzeb a nie jest na stałe zaszyty w kodzie programu. Chcąc pomieścić więcej danych możemy po prostu zwiększyć rozmiar tablicy - ale gdy do przechowania będzie mniej elementów okaże się, że marnujemy pamięć. Język C umożliwia dzięki wskaźnikom i dynamicznej alokacji pamięci tworzenie tablic takiej wielkości, jakiej akurat potrzebujemy.
Zachodniopomorskie Centrum Edukacyjne Po co dynamiczna alokacja pamięci? int wsk ; // wska ź nik na zmienn ą typu całkowitego wsk = new int ; // utworzenie nowego obiektu //(nowej zmiennej int) if( wsk != NULL ) { wsk = 10 ; // przypisanie warto ś ci (poprzez wska ź nik) cout<< wsk; // wydrukowanie zawarto ś ci zmiennej dynam. delete wsk ; }
Zachodniopomorskie Centrum Edukacyjne Po co dynamiczna alokacja pamięci? I.Sposób - tradycyjny const ROZMIAR_TABLICY = 100; double zwykła_tablica[ ROZMIAR_TABLICY ]; II. Sposób - dynamiczny int rozmiar_tablicy; cout << Ile liczb chcesz wprowadzi ć : ; cin >> rozmiar_tablicy ; double tablica_dynamiczna; tablica_dynamiczna = new double[ rozmiar_tablicy ]; delete [ ] tablica_dynamiczna;