Poznaj C++ w$ godziny0146

Poznaj C++ w$ godziny0146



Wskaźniki 135

Wskaźniki 135

ANALIZA:


W tym programie deklarujemy dwie zmienne: mojWiek (typu int) i pWiek (wskaźnik na zmienną typu int) przechowujący adres zmiennej mojWiek. W linii 10, do zmiennej mojWiek, przypisujemy wartość 5. Efekt przypisania widoczny jest w linii 11.

W linii 12, do wskaźnika pWiek, przypisujemy adres zmiennej mojWiek. W linii 14 odczytujemy wartość spod adresu przechowywanego w pWiek i wypisujemy tę wartość. W linii 18, do zmiennej o adresie przechowywanym we wskaźniku pWiek (mojWiek), przypisujemy wartość 7. Na 7 zmienia się zawartość zmiennej mojWiek. Efekt przypisania wypisywany jest w liniach 20-21.

W linii 26 do zmiennej mojWiek przypisujemy wartość 9. Wartość tę, bezpośrednio i pośrednio, odczytujemy odpowiednio w liniach 28 i 29.

Kontrolowanie adresu

Wskaźniki pozwalają na manipulowanie adresami bez wiedzy o ich faktycznej wartości. Powiedzieliśmy, że kiedy przypisujemy adres zmiennej do wskaźnika, to on na prawdę ma wartość równą adresowi tej zmiennej. Dlaczego by jednak tego nie sprawdzić? Listing 9.3. ilustruje ten pomysł.

Listing 9.3. Sprawdzenie co jest przechowywane we wskaźniku

1:    // Listing 9.3 Co przechowuje wskaźnik?

2:

3:    #include <iostream.h>4:

5:    int main()

6:    {

7:    unsigned short int mojWiek = 5, twojWiek = 10;

8:    unsigned short int * pWiek = SmojWiek; // wskaYnik

9:

10:    cout « "mojWiek:\t" « mojWiek « "\t\ttwojWiek:\t" «

wtwojWiek « "\n";

11:    cout « "SmojWiek:\t" « SmojWiek « "\tStwojWiek:\t" «

**StwojWiek «”\n";

12:

13:    cout « "pWiek:\t\t" « pWiek « "\n";

14:    cout « "*pWiek:\t\t" « *pWiek « "\n";

15:

16:    pWiek = StwojWiek;    // przypisz nowy adres

17:

18:    cout « "mojWiek:\t" « mojWiek « "\t\ttwojWiek:\t" «

StwojWiek « "\n";

19:    cout « "SmojWiek:\t" « SmojWiek « "\tStwojWiek:\t" «

'•StwojWiek «"\n";

20:

21:    cout « "pWiek:\t\t" « pWiek « "\n";

22:    cout « "*pWiek:\t\t" « *pWiek « "\n";

23:

24:    cout « "SpWiek:\t\t" « spWiek « "\n";

25:    return 0;

26: }


5. Efekt przypisania widoczny jest w linii 11.

W tym programie deklarujemy dwie zmienne: mojWiek (typu int) i pWiek (wskaźnik na zmienną typu int) przechowujący adres zmiennej mojWiek. W linii 10, do zmiennej mojWiek, przypisujemy wartość


W linii 12, do wskaźnika pWiek. przypisujemy adres zmiennej mojWiek. W linii 14 odczytujemy wartość spod adresu przechowywanego w pWiek i wypisujemy tę wartość. W linii 18, do zmiennej o adresie przechowywanym we wskaźniku pWiek (mojWiek), przypisujemy wartość 7. Na 7 zmienia się zawartość zmiennej mojWiek. Efekt przypisania wypisywany jest w liniach 20-21.

W linii 2fi dn zmiennej mojWiek przypisujemy wartość 9. Wartość tę, bezpośrednio i pośrednio, odczytujemy odpowiednio w liniach 28 i 29.

Kontrolowanie adresu

Wskaźniki pozwalają na manipulowanie adresami bez wiedzy o ich faktycznej wartości. Powiedzieliśmy, że kiedy przypisujemy adres zmiennej do wskaźnika, to on na prawdę ma wartość równą adresowi tej zmiennej. Dlaczego by jednak tego nie sprawdzić? Listing 9.3. ilustruje ten pomysł.

Listing 9.3. Sprawdzenie co jest przechowywane we wskaźniku

1:    // Listing 9.3 Co przechowuje wskaźnik?


2

3

5

6

7

8 9


10:


11:


12:

13:

14:

15:

16:

17:

18:


19:


20

21

22

23

24

25

26


#include <iostream.h>4: int mainO


unsigned short int mojWiek = 5, twojWiek = 10; unsigned short int * pWiek = SmojWiek; // wskaźnik


cout « "mojWiek:\t" « mojWiek « "\t\ttwojWiek:\t" « “"twojWiek « "\n”;

cout « "SmojWiek:\t" « SmojWiek « "\tStwojWiek:\t" « “StwojWiek «"\n";


cout « "pWiek:\t\t" « pWiek « "\n"; cout « "*pWiek:\t\t" « *pWiek « "\n";


pWiek = StwojWiek;


// przypisz nowy adres


cout « "mojWiek:\t" « mojWiek « "\t\ttwojWiek:\t“ « “twojWiek « "\n";

cout « "SmojWiek:\t" « SmojWiek « "\tStwojWiek:\t" « “StwojWiek «"\n";


cout « "pWiek:\t\t" « pWiek « "\n"; cout « "*pWiek:\t\t" « ‘pWiek « "\n";


cout « "SpWiek:\t\t" « SpWiek « "\n"; return 0;



Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0140 Wskaźniki 129 Wskaźniki 129 13 14 15 16 17 18 cout « "longVar: "
Poznaj C++ w$ godziny0142 Wskaźniki 131Przypisywanie adresu do wskaźnika Jak już mówiliśmy, każda zm
Poznaj C++ w$ godziny0144 Wskaźniki 133 Operator dostępu pośredniego ( * ) jest używany w dwóch różn
Poznaj C++ w$ godziny0148 Wskaźniki 137Dlaczego będziemy wykorzystywać wskaźniki? Jak dotąd, krok po
Poznaj C++ w$ godziny0150 Wskaźniki 139 Jeśli new nie może zarezerwować miejsca na stercie (bądź co
Poznaj C++ w$ godziny0152 Wskaźniki 141 1:    unsigned short
Poznaj C++ w$ godziny0166 Referencje 155 Referencje 155 ANALIZA: W linii 8 deklarujemy zmienną lokal
Poznaj C++ w$ godziny0004 Spis rozdziałów Część 1 Wstęp do C++ 1 1 Zaczynamy 3 2 Program w C++ 1
Poznaj C++ w$ godziny0215 206Godzina 14 W liniach 34-37 kasowane i odtwarzane są wewnętrzne zmienne
Poznaj C++ w$ godziny0089 Funkcje 75 Kiedy wartość jest odkładana na stos, to jest umieszczana w kom
Poznaj C++ w$ godziny0137 IIIZarządzanie pamięcią Godzina 9 Wskaźniki 10    Zaawansow
Poznaj C++ w$ godziny0139 128 Godzina 9 Stop. Przeczytaj tę definicję jeszcze raz. Wskaźnik jest zmi
Poznaj C++ w$ godziny0145 134 Godzina 9Manipulowanie danymi za pomocą wskaźników Jeśli przypiszesz d
Poznaj C++ w$ godziny0153 142 Godzina 9Pytania i odpowiedzi P: Dlaczego wskaźniki są aż tak ważne? O
Poznaj C++ w$ godziny0154 Godzina 10Zaawansowanewykorzystanie wskaźników Jedną z najpotężniejszych w
Poznaj C++ w$ godziny0155 144 Godzina 10Usuwanie obiektów Kiedy wywołasz delete na wskaźniku do obie
Poznaj C++ w$ godziny0156 145Zaawansowane wykorzystanie wskaźników W liniach 6-13 deklarujemy klasę
Poznaj C++ w$ godziny0158 Zaawansowane wykorzystanie wskaźników 147 32:    } 33: 34:

więcej podobnych podstron