Co to jest wskaźnik w C?
Wskaźnik w C to zmienna przechowująca adres innej zmiennej. Wskaźnik może również służyć do odwoływania się do innej funkcji wskaźnika. Wskaźnik można zwiększać / zmniejszać, tj. Wskazywać na następną / poprzednią lokalizację pamięci. Celem wskaźnika jest oszczędność miejsca w pamięci i szybsze wykonanie.
Jak używać wskaźników w C
Jeśli zadeklarujemy zmienną v typu int, v faktycznie zapisze wartość.
v jest teraz równe zero.
Jednak każda zmienna oprócz wartości ma również swój adres (lub mówiąc po prostu, gdzie znajduje się w pamięci). Adres można pobrać, umieszczając znak ampersand (&) przed nazwą zmiennej.
Jeśli wydrukujesz adres zmiennej na ekranie, będzie wyglądać jak całkowicie losowa liczba (co więcej, może różnić się od run do run).
Spróbujmy tego w praktyce ze wskaźnikiem w C przykład
Wynik tego programu to -480613588.
Co to jest wskaźnik? Zamiast przechowywać wartość, wskaźnik y przechowuje adres zmiennej.
Zmienna wskaźnika
Int * y = & v;
ZMIENNA
|
POINTER
|
Wartość przechowywana w nazwanym adresie magazynu / pamięci
|
Zmienna wskazująca na adres przechowywania / pamięci innej zmiennej
|
Deklarowanie wskaźnika
Podobnie jak zmienne, wskaźniki w C progra mming muszą zostać zadeklarowane, zanim będzie można ich użyć w programie. Wskaźniki mogą mieć dowolne nazwy, o ile są zgodne z regułami nazewnictwa C. Deklaracja wskaźnika ma następującą postać.
data_type * pointer_variable_name;
Tutaj
- typ_danych jest podstawowym typem wskaźnika dla typów zmiennych języka C i wskazuje typ zmiennej, na którą wskazuje wskaźnik.
- Gwiazdka (*: ta sama gwiazdka użyta dla mnożenia), który jest operatorem pośrednim, deklaruje wskaźnik.
Zobaczmy kilka prawidłowych deklaracji wskaźników w tym samouczku dotyczącym wskaźników w języku C:
Zainicjuj wskaźnik
Po zadeklarowaniu wskaźnika inicjalizujemy go jak standardowe zmienne z adresem zmiennej. Jeśli wskaźniki w programowaniu w C nie są niezainicjowane i używane w programie, wyniki są nieprzewidywalne i mogą być katastrofalne.
Aby uzyskać adres zmiennej, używamy operatora ampersand (&), umieszczonego przed nazwą zmiennej, której adresu potrzebujemy. Inicjalizacja wskaźnika odbywa się za pomocą następującej składni.
Składnia wskaźnika
pointer = &variable;
Poniżej znajduje się prosty program do ilustracji wskaźników:
Dane wyjściowe:
Address stored in a variable p is:60ff08Value stored in a variable p is:10
Operator |
Znaczenie |
* |
Służy 2 celom
- Deklaracja wskaźnika
- Zwraca wartość zmiennej, której dotyczy odwołanie
|
& |
Służy tylko do jednego celu
|
Typy wskaźników w C
Poniżej przedstawiono różne typy wskaźników w języku C:
Wskaźnik zerowy
Możemy utworzyć wskaźnik zerowy, przypisując wartość null podczas deklaracji wskaźnika. Ta metoda jest przydatna, gdy nie masz przypisanego adresu do wskaźnika. Wskaźnik pusty zawsze zawiera wartość 0.
Poniższy program ilustruje użycie wskaźnika pustego:
#include <stdio.h>int main(){int *p = NULL; //null pointerprintf("The value inside variable p is:\n%x”,p);return 0;}
Wynik:
The value inside variable p is:0
Void Pointer
W programowaniu w C, void pointer jest również nazywany ogólnym wskaźnikiem. Nie ma żadnego standardowego typu danych. Wskaźnik void jest tworzony za pomocą słowa kluczowego void. Może służyć do przechowywania adresu dowolnej zmiennej.
Poniższy program ilustruje użycie wskaźnika void:
#include <stdio.h>int main(){void *p = NULL; //void pointerprintf("The size of pointer is:%d\n",sizeof(p));return 0;}
Wynik:
The size of pointer is:4
Dziki wskaźnik
O wskaźniku mówi się, że jest dzikim wskaźnikiem, jeśli nie jest do niczego inicjalizowany. Tego typu wskaźniki C nie są wydajne, ponieważ mogą wskazywać na nieznane miejsce w pamięci, co może powodować problemy w naszym programie i może prowadzić do awarii programu. Podczas pracy z dzikimi wskazówkami należy zawsze zachować ostrożność.
Poniższy program ilustruje użycie dzikiego wskaźnika:
#include <stdio.h>int main(){int *p; //wild pointerprintf("\n%d",*p);return
read more