Twoje Centrum Szkoleniowe

Nauczmy się dziś czegoś nowego!

Kurs programowania - C++

C++: Wskaźniki

Wskaźnik w C++ to zmienna, która przechowuje adres innej zmiennej. Pozwalają one na bezpośrednią pracę z pamięcią, co jest szczególnie przydatne w zaawansowanym programowaniu, takim jak zarządzanie zasobami, struktury danych czy programowanie niskopoziomowe.

 

Deklaracja i inicjalizacja wskaźników

Wskaźnik deklaruje się podobnie do innych zmiennych, z tą różnicą, że przed nazwą zmiennej umieszcza się gwiazdkę *. Na przykład, deklaracja wskaźnika do zmiennej typu int wygląda następująco:

int *wskaznik;

 

 

Przykład 1: Podstawowe Użycie Wskaźnika

#include <iostream>

int main() {
    int zmienna = 10;
    int *wskaznik = &zmienna;

    std::cout << "Wartość zmiennej: " << *wskaznik << std::endl;
    return 0;
}

 

Analiza kodu:

  • int zmienna = 10; tworzy zmienną typu int o wartości 10.
  • int *wskaznik = &zmienna; inicjalizuje wskaźnik wskaznik, który przechowuje adres zmiennej zmienna.
  • std::cout << "Wartość zmiennej: " << *wskaznik << std::endl; wypisuje wartość zmiennej, do której wskazuje wskaźnik, czyli 10.

 

Przekazywanie wskaźników do funkcji

Wskaźniki mogą być używane do przekazywania zmiennych do funkcji w taki sposób, aby funkcja mogła modyfikować ich wartość.

 

Przykład 2: Modyfikacja Zmiennej za Pomocą Wskaźnika

#include <iostream>

void zmienWartosc(int *wsk) {
    *wsk = 20;
}

int main() {
    int zmienna = 10;
    zmienWartosc(&zmienna);
    std::cout << "Nowa wartość zmiennej: " << zmienna << std::endl;
    return 0;
}

 

Analiza kodu:

  • Funkcja zmienWartosc przyjmuje wskaźnik do zmiennej typu int.
  • W funkcji main, wartość zmiennej zmienna zostaje zmieniona przez funkcję zmienWartosc.

 

Zastosowanie wskaźników w tablicach

Wskaźniki mogą być również wykorzystywane do pracy z tablicami, ponieważ nazwa tablicy w C++ jest wskaźnikiem na jej pierwszy element.

 

Arytmetyka wskaźników

Arytmetyka wskaźników jest jedną z zaawansowanych funkcjonalności języka C++, która umożliwia manipulację adresami pamięci, na które wskaźniki wskazują. Ta technika jest szczególnie przydatna przy pracy z tablicami i strukturami danych. Oto rozszerzony akapit z przykładem i analizą kodu:

"Arytmetyka wskaźników w C++ umożliwia efektywne przesuwanie wskaźnika wzdłuż bloku pamięci, co jest niezbędne przy obsłudze tablic i struktur danych. Operacje arytmetyczne na wskaźnikach obejmują dodawanie (inkrementację) i odejmowanie (dekrementację). Inkrementacja wskaźnika (wskaznik++) przesuwa go do następnego elementu tablicy. Wartość, o którą przesunięty zostaje wskaźnik, zależy od typu danych, na które wskazuje. Na przykład, dla typu int, wskaźnik przesunie się o rozmiar jednego int, co umożliwia przechodzenie przez elementy tablicy bez użycia indeksów.

 

Przykład 3: Wskaźnik i tablica

#include <iostream>

int main() {
    // Deklaracja i inicjalizacja tablicy trzech elementów typu int.
    int tablica[3] = { 10, 20, 30 };

    // Ustawienie wskaźnika na pierwszy element tablicy.
    int* wskaznik = tablica;

    // Wypisanie wartości pierwszego elementu tablicy, na który wskazuje wskaźnik.
    std::cout << "Pierwszy element tablicy: " << *wskaznik << std::endl;

    // Przesunięcie wskaźnika na następny element tablicy.
    wskaznik++;

    // Wypisanie wartości drugiego elementu tablicy, na który teraz wskazuje wskaźnik.
    std::cout << "Drugi element tablicy: " << *wskaznik << std::endl;

    // Wypisanie wartości trzeciego elementu tablicy, korzystając z arytmetyki wskaźników.
    std::cout << "Trzeci element tablicy: " << *(wskaznik + 1) << std::endl;

    // Wypisanie wartości drugiego elementu tablicy powiększonej o 1. 
    // W tym przypadku operacja *wskaznik zwraca wartość drugiego elementu (20), 
    // a następnie dodaje do niej 1, w rezultacie wypisując 21.
    std::cout << "Drugi element tablicy powiększony o 1: " << *wskaznik + 1 << std::endl;

    return 0;
}

 

 

Kluczowe elementy kodu:

  1. Użycie wskaźnika do przechowywania adresu pierwszego elementu tablicy.
  2. Przesuwanie wskaźnika do kolejnych elementów tablicy za pomocą operacji ++.
  3. Użycie arytmetyki wskaźników do dostępu do elementów tablicy (*(wskaznik + 1)).
  4. Różnica między *wskaznik + 1 (pobranie wartości, na którą wskazuje wskaźnik i dodanie do niej 1) a *(wskaznik + 1) (przesunięcie wskaźnika o jeden element dalej i pobranie wartości tego elementu).

 

Testy przypięte do lekcji
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się
Aby widzieć ocenę lekcji - Zaloguj się