Zadanie domowe

7
Zachodniopomorskie Centrum Edukacyjne Zadanie domowe

description

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 ); - PowerPoint PPT Presentation

Transcript of Zadanie domowe

Page 1: Zadanie domowe

Zachodniopomorskie Centrum Edukacyjne

Zadanie domowe

Page 2: Zadanie domowe

Zachodniopomorskie Centrum Edukacyjne

Dynamiczna alokacja pamięci

Page 3: Zadanie domowe

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]

Page 4: Zadanie domowe

Zachodniopomorskie Centrum Edukacyjne

Rozwiązanie zm1

zm1

zm2

zm2

zm3

zm3

wskwsk

wsk[0] wsk[1] wsk[2]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;

}

Page 5: Zadanie domowe

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.

Page 6: Zadanie domowe

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

Page 7: Zadanie domowe

Zachodniopomorskie Centrum Edukacyjne

Po co dynamiczna alokacja pamięci?

I. Sposób - tradycyjnyconst ROZMIAR_TABLICY = 100;double zwykła_tablica[ ROZMIAR_TABLICY ];

II. Sposób - dynamicznyint rozmiar_tablicy; cout << ”Ile liczb chcesz wprowadzić: ” ; cin >> rozmiar_tablicy ;double ∗tablica_dynamiczna; tablica_dynamiczna = new

double[ rozmiar_tablicy ]; • • •delete [ ] tablica_dynamiczna;