1 / 7

Zadanie domowe

Zadanie domowe. Dynamiczna alokacja pamięci. 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 );

kynton
Download Presentation

Zadanie domowe

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Zadanie domowe

  2. Dynamiczna alokacja pamięci

  3. Ciekawa funkcja – stawiamy problem • Jak spowodować aby funkcja „zwróciła” kilka wartości naraz? intmain(intargc, char* argv[]) { intliczba_zmiennych = 3; int *wsk; wsk = wprowadz_dane(liczba_zmiennych); for(int i=0;i<liczba_zmiennych;i++) cout<<wsk[i]; system("pause"); return 0; } wsk zm1 zm2 zm3 wsk[0] wsk[1] wsk[2]

  4. wsk Rozwiązanie zm1 zm2 zm3 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; }

  5. 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.

  6. 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 ; }

  7. Po co dynamiczna alokacja pamięci? • Sposób - tradycyjny constROZMIAR_TABLICY = 100; double zwykła_tablica[ ROZMIAR_TABLICY ]; II. Sposób - dynamiczny introzmiar_tablicy; cout << ”Ile liczb chcesz wprowadzić: ” ; cin >> rozmiar_tablicy ; double ∗tablica_dynamiczna; tablica_dynamiczna = new double[ rozmiar_tablicy ]; • • • delete [ ] tablica_dynamiczna;

More Related