5672969464

5672969464



4.1. DYNAMICZNA ALOKACJA PAMIĘCI

// wprowadzonych danych itp . for (int i=0; i<n; ++i)

cout << i <<    " << zarobki [i] << endl;

// policzmy sumę: double suma = 0.0; for (int i=0; i<n; ++i) suma += zarobki [i] ;

cout << "Zarobiłem w 2012 r. " << suma << " zł. delete [] zarobki;

Ciekawostka_

w

W języku C++ można także deklarować tablice o ustalonym z góry, stałym rozmiarze (na stosie). Ich zaletą jest możliwość ustalenia wartości ich elementów podczas deklaracji, co może poprawiać czytelność programów demonstrujących implementacje pewnych szczególnych algorytmów.

1    int t [3] = {1, 2, 3}; // deklaracja tablicy i inicjowanie

wartości

2    // t wciąż jest wskaźnikiem na pierwszy element:

3    // używamy go tak, jak w przypadku tablicy dynamicznie

alokowanej

4    //    ...

5    // nie stosujemy delete! (bo nie było new)

Jednak w przypadku dużej klasy problemów ich implementacja z użyciem tablic o zadanym rozmiarze wydaje się mało naturalna i słabo „skalowalna” względem rozmiaru problemu.

4.1.5. Przekazywanie tablic funkcjom

Podsumujmy: tablica to ciąg obiektów tego samego typu położonych w pamięci kolejno, jeden po drugim. Dostęp do elementów tablicy mamy zapewniony przez wskaźnik na pierwszy z tych obiektów. Obiekty typu wskaźnikowego możemy przekazywać funkcjom tak, jak zwykłe zmienne skalarne. Wobec tego, aby można było napisać funkcję, która w jakiś sposób przetwarza dane zawarte w tablicy, należy dodatkowo przekazać jej informację o tym, ile jest elementów w tablicy, czyli jej rozmiar.

Ciekawostka_

W rozdziale 5 poznamy inny sposób informowania funkcji, gdzie znajduje się ostatni element tablicy. Założymy wtedy, że ostatnim elementem ciągu jest pewna specjalna wyróżniona wartość, (tzw. wartownik) która nie pojawia się jako „zwykły” element gdzie indziej. Wówczas wystarczy nam tylko informacja na temat położenia pierwszego elementu tablicy. Jej koniec bowiem będziemy mogli sami sobie znaleźć.

Ostatnia aktualizacja: 5 grudnia 2012 r.



Wyszukiwarka

Podobne podstrony:
4.1. DYNAMICZNA ALOKACJA PAMIĘCI int x; cout << "x znajduje się pod adresem // np.
4.1. DYNAMICZNA ALOKACJA PAMIĘCI wskx 0xdf590548 - (int*) 0xdf590544 ■(int) 100 •> 0xdf590544
4.1. DYNAMICZNA ALOKACJA PAMIĘCI 1: int x, y; 2: int* w; 0xdf590508- - y 0xdf590504- -x 0xdf590500-
4.1. DYNAMICZNA ALOKACJA PAMIĘCI Powyższe instrukcje jednak zmieniają wartości komórek pamięci
Spis treści 4.1.    Dynamiczna alokacja pamięci.......................... 1 4.1.1.
4.1. DYNAMICZNA ALOKACJA PAMIĘCI4.1.    Dynamiczna alokacja pamięci4.1.1.
4.1. DYNAMICZNA ALOKACJA PAMIĘCI Przykład z rozdz. 3 (cd.). W poprzednim rozdziale rozważaliśmy funk
4.1. DYNAMICZNA ALOKACJA PAMIĘCI 4.1. DYNAMICZNA ALOKACJA PAMIĘCI A Zapamiętaj Zaalokowany obiekt
4.1. DYNAMICZNA ALOKACJA PAMIĘCI Rozwiązanie tego problemu może być jednak bardzo czytelnie zapisane
III Wyjaśnić pojęcia i konstrukcje programowe związane z dynamiczną alokacją pamięci, opisy umieścić
DSC00753 Rezerwacja obszarów pamięci Wskaźniki służą do dynamicznej alokacji (rezerwacji} tablic. Sł
10 Wprowadzenie danych rynkowych w unikatową wiedzę pozwalającą na dynamiczny rozwój i ponadprzecięt
Organizacja pamięci Wprowadzanie i wyprowadzanie -► Szyna danych DB / ) informacji
Algorytmy i struktury danych Struktury w języku C/C++Struktury - przykład wykorzystania 32: for (int
Systemy Operacyjne Zespół programów, które sterują wprowadzaniem danych do pamięci operacyjnej i
Wprowadzenie do MatLab (55) szy program używa funkcji zeros do wstępnego przypisania pamięci wektora

więcej podobnych podstron