5672969479

5672969479



4.1. DYNAMICZNA ALOKACJA PAMIĘCI

Przykład z rozdz. 3 (cd.). W poprzednim rozdziale rozważaliśmy funkcję, która służyła do zamiany wartości dwóch zmiennych całkowitych. Przypomnijmy, że prawidłowe rozwiązanie tego problemu wymagało użycia nie argumentów przekazanych przez wartość, ale przez referencję. Równie skutecznym, acz w tym wypadku może nieco mniej eleganckim, jest użycie w tym przypadku wskaźników.

void zamień(int* x, int* y) { int t = *x;

*x = *y;

*y = t;

>

int mainO {

int n = 1, m = 2;

zamień (&n, &m) ; // przekazanie argumentów przez wskaźnik cout << n << ", " << m << endl; return 0;

}

Dzięki temu, że przekazaliśmy funkcji zamień O adresy zmiennych zadeklarowanych w funkcji mainO, możemy nie tylko odczytywać, ale i nadpisywać tutaj ich wartości. Ominęliśmy tym samym ograniczenia przekazywania argumentów przez wartość (kopiowanie) — dostęp do „oryginalnych” zmiennych mamy tutaj w sposób pośredni, tj. za pomocą operatora wyłuskania *.    ■

Ciekawostka_

Pamiętamy, że aby dostać się do konkretnego pola struktury, należy użyć operatora (kropki). Jeśli mamy dostęp do wskaźnika na strukturę, możemy użyć do tego celu operatora

struct Punkt

{

double x; double y;

>;

// •• ■ (np. Punkt p;

mtr

o> ...

Punkt* wp =

&p;

// wskaźnik

na p

wp—>x = 1.0;

//

to samo, co

(*wp) ,x = 1.0

drugie /7

niej wygodne

wp— >y = 2.0;

//

to samo, co

(*wp) . y = 2.0

4.1.3. Przydział i zwalnianie pamięci ze sterty

Oprócz ściśle określonej na etapie pisania programu ilości danych na stosie, można również dysponować pamięcią na stercie, por. s. 1. Miejsce na nasze dane może być przydzielane (alokowane) dynamicznie podczas działania programu za pomocą operatora new. Po użyciu należy je zwolnić za pomocą operatora delete.

Ostatnia aktualizacja: 5 grudnia 2012 r.



Wyszukiwarka

Podobne podstrony:
4.1. DYNAMICZNA ALOKACJA PAMIĘCI Powyższe instrukcje jednak zmieniają wartości komórek pamięci
4.1. DYNAMICZNA ALOKACJA PAMIĘCI // wprowadzonych danych itp . for (int i=0; i<n; ++i) cout <&
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 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 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ć
image 077 Rozdział 5Szyki antenowe liniowe i planarne W poprzednich rozdziałach rozważaliśmy narzędz
pedeutologia00011 (2) /-----/--- A%t między teorię naukowę a praktykę W poprzednim rozdziale rozważa
img121 (12) 7Backpropagation7.1. Co to jest backpropagation? W poprzednim rozdziale rozważaliśmy wyb
P1020648 (2) oPrzyroda i czas W poprzednim rozdziale rozważaliśmy, jak przyroda, [>osU7egana jako
P1020648 (2) oPrzyroda i czas W poprzednim rozdziale rozważaliśmy, jak przyroda, [>osU7egana jako

więcej podobnych podstron