Kurs programowania w C cz. 102

Nasza ocena:

3
Wyświetleń: 525
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

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

Fragment notatki:

STAŁE WSKAŹNIKI 119 Wiesz już, że nie możemy odwołać się pod komórkę pamięci wskazywaną przez wskaźnik NULL. Po co zatem przypisywać wskaźnikowi 0? Odpowiedź może być zaskakująca: właśnie po to, aby uniknąć błędów! Wydaje się to zabawne, ale większość (jeśli nie wszystkie) funkcje, które zwracają wskaźnik w przypadku błędu zwrócą właśnie NULL, czyli zero. Tutaj rodzi się kolejna wskazówka: jeśli w danej zmiennej przechowujemy wskaźnik, zwrócony wcześniej przez jakąś funkcję zawsze sprawdzajmy, czy nie jest on równy 0 (NULL). Wtedy mamy pewność, że funkcja zadziałała poprawnie. Dokładniej, NULL nie jest słowem kluczowym, lecz stałą (makrem) zadeklarowaną przez dyrektywy  preprocesora.  Deklaracja taka może być albo wartością 0 albo też wartością 0 zrzutowaną na void* (((void *)0)), ale też jakimś słowem kluczowym deklarowanym przez kompilator. Warto zauważyć, że pomimo przypisywania wskaźnikowi zera, nie oznacza to, że wskaźnik NULL jest reprezentowany przez same zerowe bity. Co więcej, wskaźniki NULL różnych typów mogą mieć różną wartość! Z tego powodu poniższy kod jest niepoprawny: int **tablica_wskaznikow =  calloc(100,  sizeof *tablica_wskaznikow); Zakłada on, że w reprezentacji wskaźnika NULL występują same zera. Poprawnym zaini- cjowaniem dynamicznej tablicy wskaźników wartościami NULL jest (pomijamy sprawzdanie wartości zwróconej przez malloc()): int **tablica_wskaznikow = malloc(100 * sizeof *tablica_wskaznikow); int i = 0; while (i

(…)

… na stałą wartość:
const int *a; /* lub równoważnie */
int const *a;
oraz stałe wskaźniki:
int * const b;
Pierwszy to wskaźnik, którym nie można zmienić wskazywanej wartości. Drugi to wskaźnik, którego nie można przestawić na inny adres. Dodatkowo, można zadeklarować stały
wskaźnik, którym nie można zmienić wartości wskazywanej zmiennej, i również można zrobić
to na dwa sposoby:
const int * const c…
... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz