Zachodniopomorskie Centrum Edukacyjne Zadanie domowe Zachodniopomorskie Centrum Edukacyjne

  • Slides: 7
Download presentation
Zachodniopomorskie Centrum Edukacyjne Zadanie domowe

Zachodniopomorskie Centrum Edukacyjne Zadanie domowe

Zachodniopomorskie Centrum Edukacyjne Dynamiczna alokacja pamięci

Zachodniopomorskie Centrum Edukacyjne Dynamiczna alokacja pamięci

Zachodniopomorskie Centrum Edukacyjne Ciekawa funkcja – stawiamy problem • Jak spowodować aby funkcja „zwróciła”

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"); wsk zm 1 return 0; } zm 2 zm 3 wsk[0] wsk[1] wsk[2]

Zachodniopomorskie Centrum Edukacyjne wsk Rozwiązanie zm 1 int * wprowadz_dane(int l_z){ int *t =

Zachodniopomorskie Centrum Edukacyjne wsk Rozwiązanie zm 1 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; } { zm 2 zm 3 wsk[0] wsk[1] wsk[2]

Zachodniopomorskie Centrum Edukacyjne Co daje alokacja pamięci • Mając styczność z tablicami można się

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 ; wsk = new

Zachodniopomorskie Centrum Edukacyjne Po co dynamiczna alokacja pamięci? int∗ wsk ; wsk = new int ; // wskaźnik na zmienną typu całkowitego // 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

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;