Poznaj C++ w$ godziny0144

Poznaj C++ w$ godziny0144



Wskaźniki 133


Operator dostępu pośredniego ( * ) jest używany w dwóch różnych wariantach: deklaracji i dostępu. Kiedy wskaźnik jest deklarowany, gwiazdka oznacza, że nie jest on zmienną danego typu, lecz właśnie wskaźnikiem na taką zmienną. Np.:

unsigned short * pWiek =0;    // stwórz wskaźnik na

**unsigned short int

Kiedy wykorzystujemy wskaźnik do odczytania (lub zmiany) wartości zmiennej, to gwiazdka oznacza, że nie chcemy adresu zmiennej lecz wartość przechowywaną pod tym adresem. Np.:

♦pWiek =5;    // przypisz 5 do wartości wskazywanej przez pWiek

Pamiętaj, że symbol ( * ) jest używany również jako operator mnożenia. Kompilator, na podstawie kontekstu, decyduje, który operator ma wykorzystać.


Wskaźniki, adresy i zmienne

Bardzo ważne jest, aby odróżniać wskaźnik, adres, który ten wskaźnik przechowuje i wartość przechowywaną pod adresem zawartym we wskaźniku. Wiele nieporozumień wynika z nieprawidłowej interpretacji i błędnego rozumienia tych trzech różnych terminów.

Rozważmy następujący przykład: int zmienna = 5;

int *pWskaznik = (zmienna;

zmienna jest zadeklarowana jako int i inicjalizowana wartością 5. pWskaznik

jest zadeklarowany jako wskaźnik na zmienną typu int i jest inicjalizowany adresem zmiennej zmienna. pWskaznik (jak sama nazwa wskazuje) jest wskaźnikiem. Adres przechowywany przez pWskaznik jest adresem zmiennej zmienna. Wartość pod adresem przechowywanym przez pWskaznik jest równa 5. Rysunek 9.3. schematycznie pokazuje reprezentację zmiennych pWskaznik i zmienna.

Rysunek 9.3    zmienna    pWskaznik


Reprezentacji

zmiennych w pamięci Nazwa

zmiennej

-1-1-1-

0000 0000

I I I I

0000 0000 0000 0110

0000 0101

0000 0000 0000 0101

5

1 1 1

i

101

1 1 1 1

100 101 102 103 Adres komórki pamięci

104

105 106 107 108 109


Operator dostępu pośredniego ( * ) jest używany w dwóch różnych wariantach: deklaracji i dostępu. Kiedy wskaźnik jest deklarowany, gwiazdka oznacza, że nie jest on zmienną danego typu, lecz właśnie wskaźnikiem na taką zmienną. Np.:

unsigned short * pWiek =0;    // stwórz wskaźnik na

"■•unsigned short int

Kiedy wykorzystujemy wskaźnik do odczytania (lub zmiany) wartości zmiennej, to gwiazdka oznacza, że nie chcemy adresu zmiennej lecz wartość przechowywaną pod tym adresem. Np.:

*pWiek =5;    // przypisz 5 do wartości wskazywanej przez pWiek

Pamiętaj, że symbol ( * ) jest używany również jako operator mnożenia. Kompilator, na podstawie kontekstu, decyduje, który operator ma wykorzystać.


Wskaźniki, adresy i zmienne

Bardzo ważne jest, aby odróżniać wskaźnik, adres, który ten wskaźnik przechowuje i wartość przechowywaną pod adresem zawartym we wskaźniku. Wiele nieporozumień wynika z nieprawidłowej interpretacji i błędnego rozumienia tych trzech różnych terminów.

Rozważmy następujący przykład: int zmienna = 5;

int *pWskaznik = fizmienna;

zmienna jest zadeklarowana jako int i inicjalizowana wartością 5. pWskaznik jest zadeklarowany jako wskaźnik na zmienną typu int i jest inicjalizowany adresem zmiennej zmienna. pWskaznik (jak sama nazwa wskazuje) jest wskaźnikiem. Adres przechowywany przez pWskaznik jest adresem zmiennej zmienna. Wartość pod adresem przechowywanym przez pWskaznik jest równa 5. Rysunek 9.3. schematycznie pokazuje reprezentację zmiennych pWskaznik i zmienna.

Rysunek 9.3

Reprezentacji zmiennych w pamięci


zmienna


pWskaznik

Nazwa

zmiennej i

r l

'

I 1 I I

0000 0000

1 1 I 1 1

0000 0000 0000 0110

0000 0101

0000 0000 0000 0101

5

101

_1_

_1_1_1_

_I_1_

_1_1_1_

100    101    102    103    104    105    106    107    108    109

Adres komórki pamięci



Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0150 Wskaźniki 139 Jeśli new nie może zarezerwować miejsca na stercie (bądź co
Poznaj C++ w$ godziny0033 Program w C++ 17 Sednem naszego programu jest linia 5. Obiekt cout użyty z
Poznaj C++ w$ godziny0070 Instrukcje i wyrażenia 55 if (x != 0)    // jeśli x jest ró
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$ godziny0146 Wskaźniki 135 Wskaźniki 135 ANALIZA: W tym programie deklarujemy dwie zmie
Poznaj C++ w$ godziny0148 Wskaźniki 137Dlaczego będziemy wykorzystywać wskaźniki? Jak dotąd, krok po
Poznaj C++ w$ godziny0152 Wskaźniki 141 1:    unsigned short
Poznaj C++ w$ godziny0089 Funkcje 75 Kiedy wartość jest odkładana na stos, to jest umieszczana w kom
Poznaj C++ w$ godziny0139 128 Godzina 9 Stop. Przeczytaj tę definicję jeszcze raz. Wskaźnik jest zmi
Poznaj C++ w$ godziny0154 Godzina 10Zaawansowanewykorzystanie wskaźników Jedną z najpotężniejszych w
Poznaj C++ w$ godziny0186 175Zaawansowane referencje i wskaźniki Wskaźnik plnt jest deklarowany i in
Poznaj C++ w$ godziny0232 Tablice 223Usuwanie tablicy ze sterty Rodzina jest wskaźnikiem do tablicy
W przypadku pokazanym na rys. 4.23a, odległość wskaźników od operatora jest ograniczona tylko wielko
Poznaj C++ w$ godziny0011 X Poznaj C++ w 24 godziny Ograniczenia przy przeciążaniu operatorów
Poznaj C++ w$ godziny0023 Zaczynamy 7 C++ to nie tylko lepsze C Prawdą jest, że C++ to rozbudowane C
Poznaj C++ w$ godziny0032 16 Godzina 2 W linii 1 do programu dołączany jest plik iostream.h. Kompila

więcej podobnych podstron