Wskaźniki w C++

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

Wskaźnik to zmienna przechowująca adres innej zmiennej w pamięci. W C++ wskaźniki są często używane do przekazywania danych do funkcji tak, aby funkcja mogła zmienić oryginalne wartości zmiennych.

Deklaracja wskaźnika

int *p;

Zmienna p jest wskaźnikiem na wartość typu int, czyli może przechowywać adres zmiennej całkowitej.

Operator adresu &

Operator & zwraca adres zmiennej:

int a = 10;
int *p = &a;

Oznacza to: wskaźnik p przechowuje adres zmiennej a.

Operator dereferencji *

Operator * pozwala dostać się do wartości znajdującej się pod adresem zapisanym we wskaźniku:

*p = 20;

Po tej instrukcji zmienna a ma wartość 20, ponieważ p wskazuje na a.

Przekazywanie wskaźników do funkcji

Jeżeli funkcja ma parametry typu int *, należy przekazać do niej adresy zmiennych:

void zamien(int *a, int *b) {
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

int x = 12;
int y = 34;
zamien(&x, &y);

Wywołanie zamien(&x, &y) jest poprawne, ponieważ &x i &y są adresami zmiennych typu int.

Częsty błąd

Niepoprawne jest wywołanie:

zamien(x, y);

jeśli funkcja oczekuje int *, ponieważ x i y są wartościami typu int, a nie adresami.