Menu
Coddy logo textTech

Deklarowanie wskaźników

Część sekcji Logika i sterowanie przepływem ścieżki C w Coddy. Lekcja 2 z 63.

Skoro już rozumiesz, czym są wskaźniki, nauczmy się je tworzyć. Deklarowanie zmiennej wskaźnikowej odbywa się według określonej składni, która informuje kompilator, na jaki typ danych będzie wskazywać wskaźnik.

Podstawowa składnia deklarowania wskaźnika to: data_type *pointer_name;

int *ptr;        // Deklaruje wskaźnik na liczbę całkowitą
char *ch_ptr;    // Deklaruje wskaźnik na znak
float *f_ptr;    // Deklaruje wskaźnik na liczbę zmiennoprzecinkową

Gwiazdka (*) sprawia, że jest to deklaracja wskaźnika. Informuje kompilator, że ta zmienna będzie przechowywać adres pamięci, a nie rzeczywistą wartość danych. Deklarując int *ptr;, mówisz: „ptr to wskaźnik, który może przechowywać adres zmiennej typu całkowitego”.

Dobrą praktyką jest inicjalizowanie wskaźników wartością NULL, jeśli nie wskazują jeszcze na prawidłowy adres pamięci. Zapobiega to wskazywaniu przez nie losowych lokalizacji pamięci: int *ptr = NULL;

Podczas drukowania adresów wskaźników za pomocą printf używaj specyfikatora formatu %p. Często zaleca się rzutowanie wskaźnika na (void *), aby zapewnić zgodność i prawidłowe formatowanie: printf("%p", (void *)ptr);

Zwróć uwagę, że typ danych przed gwiazdką określa, na jaki rodzaj danych będzie wskazywać wskaźnik. Jest to ważne, ponieważ różne typy danych zajmują różną ilość pamięci, a kompilator musi znać tę informację, aby prawidłowo zarządzać pamięcią.

challenge icon

Wyzwanie

Łatwy
Napisz program w C, który demonstruje prawidłową składnię deklarowania wskaźników. Twój program powinien:
  1. Zadeklarować wskaźnik na liczbę całkowitą o nazwie int_ptr, zainicjalizowany wartością NULL
  2. Zadeklarować wskaźnik na znak o nazwie char_ptr, zainicjalizowany wartością NULL
  3. Zadeklarować wskaźnik na liczbę zmiennoprzecinkową o nazwie float_ptr, zainicjalizowany wartością NULL
  4. Wypisać adresy pamięci przechowywane w każdym wskaźniku za pomocą printf ze specyfikatorem formatu %p. Podczas wypisywania rzutuj wskaźnik na (void*), aby zapewnić prawidłowe formatowanie, na przykład: printf("Label: %p\n", (void*)ptr);

Wynik powinien wyświetlać trzy adresy wskaźników w następującym formacie:

Integer pointer: [address]
Character pointer: [address]  
Float pointer: [address]

Pamiętaj, że rzeczywiste adresy pamięci będą się różnić, ale format i etykiety muszą dokładnie odpowiadać powyższemu przykładowi.

Spróbuj swoich sił

#include <stdio.h>

int main() {
    // TODO: Zadeklaruj tutaj swoje wskaźniki
    
    
    // TODO: Wypisz adresy wskaźników w wymaganym formacie
    
    
    return 0;
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i sterowanie przepływem

Poćwicz samodzielnie: Kompilator C online