C – Wskaźniki

Reklamy

Wskaźniki w C są łatwe i przyjemne do nauczenia. Niektóre zadania programowania w języku C są łatwiejsze do wykonania za pomocą wskaźników, a innych zadań, takich jak dynamiczna alokacja pamięci, nie można wykonać bez użycia wskaźników. Dlatego konieczne jest nauczenie się wskaźników, aby zostać doskonałym programistą C. Zacznijmy uczyć się ich w prostych i łatwych krokach.

Jak wiesz, każda zmienna jest miejscem w pamięci i każda lokalizacja pamięci ma zdefiniowany adres, do którego można uzyskać dostęp za pomocą znaku ampersand (&), który oznacza adres w pamięci. Rozważmy następujący przykład, który wypisuje adres zdefiniowanych zmiennych –

Gdy powyższy kod jest kompilowany i wykonywany, daje to wynik –

Address of var1 variable: bff5a400Address of var2 variable: bff5a3f6

Co to są wskaźniki?

Wskaźnik to zmienna, której wartością jest adres innej zmiennej, tj. adres bezpośredni miejsca w pamięci. Podobnie jak w przypadku każdej zmiennej lub stałej, przed użyciem go do przechowywania adresu zmiennej należy zadeklarować wskaźnik. Ogólną formą deklaracji zmiennej wskaźnikowej jest –

type *var-name;

Tutaj typ jest podstawowym typem wskaźnika; musi to być poprawny typ danych C, a nazwa-zmiennej to nazwa zmiennej wskaźnikowej. Gwiazdka * używana do zadeklarowania wskaźnika jest tą samą gwiazdką, która jest używana do mnożenia. Jednak w tej instrukcji gwiazdka jest używana do oznaczenia zmiennej jako wskaźnika. Spójrz na niektóre z prawidłowych deklaracji wskaźników –

int *ip; /* pointer to an integer */double *dp; /* pointer to a double */float *fp; /* pointer to a float */char *ch /* pointer to a character */

Rzeczywisty typ danych wartości wszystkich wskaźników, czy to liczba całkowita, zmiennoprzecinkowa, znak lub inna , to to samo, długa liczba szesnastkowa, która reprezentuje adres pamięci. Jedyną różnicą między wskaźnikami różnych typów danych jest typ danych zmiennej lub stałej, na którą wskazuje wskaźnik.

Jak używać wskaźników?

Jest kilka ważnych operacji, co będziemy robić bardzo często za pomocą wskaźników. (a) Definiujemy zmienną wskaźnikową, (b) przypisujemy adres zmiennej do wskaźnika i (c) ostatecznie uzyskujemy dostęp do wartości pod adresem dostępnym w zmiennej wskaźnikowej. Odbywa się to za pomocą jednoargumentowego operatora *, który zwraca wartość zmiennej znajdującej się pod adresem określonym przez jej operand. Poniższy przykład wykorzystuje te operacje –

Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik –

Address of var variable: bffd8b3cAddress stored in ip variable: bffd8b3cValue of *ip variable: 20

Wskaźniki NULL

Zawsze dobrze jest przypisać wartość NULL zmiennej wskaźnikowej, na wypadek gdybyś nie posiadał dokładnego adresu do przypisania. Odbywa się to w momencie deklaracji zmiennej. Wskaźnik, któremu przypisano wartość NULL, nazywany jest wskaźnikiem zerowym.

Wskaźnik NULL jest stałą o zerowej wartości zdefiniowanej w kilku standardowych bibliotekach. Rozważmy następujący program –

#include <stdio.h>int main () { int *ptr = NULL; printf("The value of ptr is : %x\n", ptr ); return 0;}

Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik –

The value of ptr is 0

W większości systemów operacyjnych programy nie mają dostępu do pamięci pod adresem 0, ponieważ pamięć ta jest zarezerwowana przez system operacyjny. Jednak adres pamięci 0 ma szczególne znaczenie; sygnalizuje, że wskaźnik nie ma wskazywać dostępnego miejsca w pamięci. Ale zgodnie z konwencją, jeśli wskaźnik zawiera wartość null (zero), zakłada się, że nie wskazuje na nic.

Aby sprawdzić wskaźnik zerowy, możesz użyć instrukcji „if” w następujący sposób –

if(ptr) /* succeeds if p is not null */if(!ptr) /* succeeds if p is null */

Szczegółowe wskazówki

Wskaźniki mają wiele, ale łatwych koncepcji i są bardzo ważne w programowaniu w C. Następujące ważne koncepcje wskaźników powinny być jasne dla każdego programisty C –

Sr.No. Koncepcja & Opis
1 Arytmetyka wskaźników

Istnieją cztery operatory arytmetyczne, których można używać we wskaźnikach: ++, -, +, –

2 Tablica wskaźników

Możesz zdefiniować tablice do przechowywania wielu wskaźników.

3 Wskaźnik do wskaźnika

C pozwala na umieszczenie wskaźnika na wskaźniku itd.

4 Przekazywanie wskaźników do funkcji w C

Przekazywanie argument przez odwołanie lub przez adres umożliwia zmianę przekazanego argumentu w funkcji wywołującej przez wywołaną funkcję.

5 Return wskaźnik z funkcji w C

C pozwala funkcji zwrócić wskaźnik do zmiennej lokalnej, zmiennej statycznej, a także pamięci przydzielonej dynamicznie.

Reklamy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *