Kurs programowania w C cz. 96

Nasza ocena:

5
Pobrań: 7
Wyświetleń: 525
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Kurs programowania w C cz. 96 - strona 1

Fragment notatki:

OPEROWANIE NA WSKAŹNIKACH 113 Aby dobrać się do wartości wskazywanej przez zmienną należy użyć unarnego ope- ratora  *  (gwiazdka), zwanego  operatorem wyłuskania : #include  int main (void) { int liczba = 80; int *wskaznik = &liczba; printf("Wartosc zmiennej: %d; jej adres: %p.\n", liczba, (void*)&liczba); printf("Adres zapisany we wskazniku: %p, wskazywana wartosc: %d.\n", (void*)wskaznik, *wskaznik); *wskaznik = 42; printf("Wartosc zmiennej: %d, wartosc wskazywana przez wskaznik: %d\n", liczba, *wskaznik); liczba = 0x42; printf("Wartosc zmiennej: %d, wartosc wskazywana przez wskaznik: %d\n", liczba, *wskaznik); return 0; } O co chodzi z tym typem, na który ma wskazywać? Czemu to takie ważne? Jest to ważne z kilku powodów. Różne typy zajmują w pamięci różną wielkość. Przykładowo, jeżeli w zmiennej typu unsigned int  zapiszemy liczbę  65 530 , to w pamięci będzie istnieć jako: +--------+--------+ |komórka1|komórka2| +--------+--------+ |11111111|11111010| = (unsigned int) 65530 +--------+--------+ Wskaźnik do takiej zmiennej (jak i do dowolnej innej) będzie wskazywać na pierw- szą komórkę, w której ta zmienna ma swoją wartość. Jeżeli teraz stworzymy drugi wskaźnik do tego adresu, tym razem typu  unsigned char* , to wskaźnik przejmie ten adres prawidłow o2,  lecz gdy spróbujemy odczytać wartość na jaką wskazuje ten wskaźnik to zostanie odczytana tylko pierwsza komórka i wynik będzie równy  255 : 2Tak naprawdę nie zawsze można przypisywać wartości jednych wskaźników do innych. Standard C gwarantuje jedynie, że można przypisać wskaźnikowi typu void* wartość dowolnego wskaźnika, a następnie przypisać tą wartość do wskaźnika pierwotnego typu oraz, że dowolny wskaźnik można przypisać do wskaźnika typu char*. ... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz