Archiwa tagu: wskaźniki

C++ kurs programowania – wskaźniki (CodeBlocks)

Witam wszystkich serdecznie w kolejnym artykule. Dzisiaj zajmiemy się tematyką wskaźników.

Co to w ogóle są wskaźniki?

Wskaźniki to po prostu zmienne, nazywane zmiennymi wskaźnikowymi, które przechowują adresy innych zmiennych. Ten adres to adres w pamięci RAM zmiennej, na którą wskazuje dany wskaźnik.

No to bez zbędnych wstępów, napiszmy coś praktycznego.

Utwórz nowy projekt  konsolowy.  Standardowy kod konsolowego projektu Code Blocks wygląda jak poniżej.

 

Listing


#include <iostream>

using namespace std;

int main()

{

    cout << "Hello world!" << endl;

    return 0;

}


Zainicjujmy nową zmienną o nazwie liczba i przypiszmy jej wartośc 100.

int  liczba = 100;

Teraz utworzymy zmienną wskaźnikową (wskaźnik) o nazwie wsk_liczba, która będzie przechowywała adres w pamięci RAM zmiennej liczba.

int *wsk_liczba;

Skoro zmienna liczba jest typu int to zmienna wskaźnikowa też musi być typu int. Znak * mówi kompilatorowi, że nazwa za tym znakiem jest nazwa zmiennej wskaźnikowej.

Teraz przepiszmy adres zmiennej liczba do zmiennej wskaźnikowej wsk_liczba.

wsk_liczba = &liczba;

Przy  przy pisaniu adresu zmiennej do wskaźnika używamy znaków &.  Znak ten " wyciąga"  adres pamięci RAM tego co znajduje się po prawej stronie od znaku,  czyli w naszym przypadku adres zmiennej liczba.

Jak korzystać ze wskaźnika?

Do wskaźnika możemy odwołać się na dwa sposoby. Albo odwołać się do wartości którą przechowuje wskaźnik, czyli adres innej zmiennej w pamięci RAM. Albo odwołać się do wartości zmiennej na którą wskazuje wskaźnik.

No to zacznijmy od pracy na wskaźniku, czyli adresie który przechowuje wskaźnik. Naszą linię z „Hello world” zmodyfikuj na taką jak jest poniżej.

cout << wsk_liczba << endl;

W efekcie powinniśmy otrzymać kod jak poniżej.

 

Listing


#include <iostream>

using namespace std;

int main()

{

    int liczba = 100;

    int *wsk_liczba;

    wsk_liczba = &liczba;

    cout << wsk_liczba << endl;

    return 0;

}


PAMIĘTAJ. Jeżeli używasz innego środowiska niż Code Blocks musisz dołączyć do swojego projektu bibliotekę iostream i  ustawić odpowiednią przestrzeń nazw na std.  Code Blocks standardowo dodaje obie te linie do swojego kodu przy projektach konsolowych, więc my w tym momencie nie musimy tego robić.

Teraz możemy uruchomić nasz projekt.

Efektem uruchomienia naszego programu powinien być adres komórki na którą wskazuje wskaźnik.

0x61fe14

Oczywiście adres jest w postaci szesnastkowej.

No to teraz odwołajmy się do wartości zmiennej na którą wskazuje wskaźnik. Do naszego programu dodajmy więcej linię.

cout << *wsk_liczba << endl;

Jak widzisz Różnica polega tylko na tym że przed nazwą wskaźnika stoi znak *. W takim przypadku odwołujemy się do wartości zmiennej na którą wskazuje wskaźnik.

Uruchamiamy nasz program. W wyniku uruchomienia powinniśmy otrzymać dwie linie. Pierwsza to adres zmiennej którą przechowuje wskaźnik. A druga linia to wartość zmiennej na którą wskazuje wskaźnik.

0x61fe14

100

 

Jak widzisz wskaźniki to nie taka trudna sprawa. Zachęcam cię do samodzielnych ćwiczeń ze wskaźnikami. Zapraszam Cię również na kolejne artykuły.

Poniżej link do kodu z tego odcinka:

CodeBlocks


c++ kurs programowania obiektowego spis treści