Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

Definiowanie wskaźników w C++

Wskaźniki to jeden z niewielu elementów w C++ który co prawda nie jest konieczny przy pisaniu aplikacji, ale jego znajomość znacznie ułatwia pracę programistą. Zrozumienie ogólnej idei działania wskaźników nie jest trudne, ale sam temat jest dość rozległy dlatego też poświęcę temu zagadnieniu kilka artykułów. Zaczniemy od rzeczy najistotniejszej czyli wyjaśnienia sposobu działania wskaźników oraz przykłady ich użycia.

Wskaźnik w programowaniu to nic innego jak normalny wskaźnik, który używamy na przykład do wskazania jakiegoś miasta na mapie czy kubka z herbatą stojącego na biurku. Różnica jest tylko taka, że definiując wskaźnik w C++ nie wskazujemy na jakąś rzecz tylko na adres pamięci w którym przechowywane są jakieś dane. Czasami są to informacje przydatne programiście na przykład jakieś stałe, a czasami śmieci. Należy jednak pamiętać, że wskaźnik zawsze na coś wskazuje.

Wskaźnik w C++ wskazujący na dowolny obiekt definiujemy tak:

typObiektu *nazwaWskaznika;

A tutaj mamy wskaźnik, którzy wskazuje na obiekt typu int:

int *wskaznik;
int *wskaznik2, *wskaznik3;

Oczywiście wskaźnik może zostać również „ręcznie” przestawiony tak żeby wskazywał to co dokładnie chce programista, można to zrobić przekazując danemu wskaźnikowi referencje do jakiegoś obiektu:

int liczba = 10; //definiujemy normalną zmienną liczba do której przypisujemy 10
//teraz chcemy, żeby wskaznik wskazywał na zmienną liczba, która przechowuje liczbę 10
int *wskaznik = &liczba; //wskaźnik wskazuje teraz na zmienną liczba, tutaj zostały przekazane referencje do obiektu int
int liczba = 10;
int *wsk;
wsk = &liczba; //przekazanie referencji czyli ustawienie wskaźnika

Należy pamiętać, iż wskaźnik nie przechowuje nam jakiejś danej np. wyniku działania 5 * 5 czyli liczby 25 ale adres pamięci, w którym ta liczba się znajduje.

Przeglądnijmy na praktycznym przykładzie w jaki sposób działają wskaźniki w C++:

#include <iostream>

using namespace std;

int main()
{
     int liczba1 = 5;
     int liczba2 = 10;

     int *wsk; //teraz wskaźnik wskazuje na jakieś śmieci
     cout << *wsk << endl; //jakieś śmieci

     int *wskaznik2 = &liczba1; //teraz wskaznik2 wskazuje na zmienną liczba1
     cout << *wskaznik2 << endl; //wypisze: 5

     wsk = &liczba2; //wskaźnik wskazuje teraz na zmienną liczba2
     cout << *wsk << endl; //wypisze: 10

     liczba2 = 15;
     cout << *wsk << endl; //wypisze 15 ponieważ wskaźnik cały czas wskazuje na zmienną liczba2

     *wsk = 20;
     cout << *wsk << endl; //wypisze 20 ponieważ do adresu na który wskazuje wskaźnik przypisaliśmy 20
     cout << liczba2 << endl; //wypisze 20 ponieważ wcześniej do tego adresu zapisaliśmy liczbę 20

     return 0;
}

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

, , ,

Dodaj komentarz

Odpowiedz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Pin It on Pinterest