Menu
Coddy logo textTech

Arytmetyka – operacje

Lekcja 4 z 14 w kursie Wskaźniki w C++ w Coddy.

++ / --

Zwiększanie lub zmniejszanie wartości wskaźnika przesuwa go do następnej lub poprzedniej lokalizacji w pamięci, która zawiera dane tego samego typu. Jest to bardzo przydatne, gdy mamy tablicę i ustawiamy wskaźnik tak, aby wskazywał pierwszy element — każde zwiększenie wartości wskaźnika przesuwa go o jeden element w prawo

int list[] = {1, 2, 3, 4, 5};
int *ptr = &list[0];
cout << *ptr << " ";
ptr++;
cout << *ptr << " ";
ptr--;
cout << *ptr;
Output:
1 2 1

Jak widać, zwiększając lub zmniejszając wartość wskaźnika, przesuwamy go do następnej lub poprzedniej lokalizacji w pamięci zawierającej dane tego samego typu, w tym przypadku do następnego lub poprzedniego elementu tablicy


+= / -=

Dodanie lub odjęcie liczby większej niż 1 może pomóc nam szybciej przesuwać wskaźnik o kilka elementów naraz

int list[] = {1, 2, 3, 4, 5};
int *ptr = &list[0];
cout << *ptr << " ";
ptr += 4;
cout << *ptr << " ";
ptr -= 2;
cout << *ptr;
Output:
1 5 3

n = p2 - p1

Ostatnią przydatną operacją, którą możemy wykonać na wskaźnikach, jest obliczenie, ile elementów znajduje się między nimi. Możemy to zrobić, obliczając ich różnicę

int list[] = {1, 2, 3, 4, 5};
int *ptr = &list[0];
int *ptr2 = &list[4];
cout << "Between " << *ptr << " and " << *ptr2
 << " there's " << ptr2-ptr << " elements";
Output:
Between 1 and 5 there's 4 elements

Możemy wykorzystać te 3 techniki do wykonywania wielu przydatnych operacji na wskaźnikach i rozwiązywania problemów w naszych codziennych zadaniach

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

challenge icon

Wyzwanie

Łatwy

Biorąc pod uwagę następującą tablicę liczb całkowitych:

int numbers[] = {10, 20, 30, 40, 50, 60, 70, 80};
  • Utwórz wskaźnik ptr1, który wskazuje na pierwszy element tablicy.
  • Utwórz wskaźnik ptr2 i przypisz mu wartość ptr
  • Zwiększ ptr2, aby przejść do czwartego elementu
  • Utwórz ptr3 i przypisz mu wartość ptr2 
  • Zmniejsz ptr3 o 2 pozycje
  • Oblicz i WYDRUKUJ liczbę elementów między pierwszym a ostatnim elementem tablicy, odejmując wskaźniki w następujący sposób: There are {elements} elements between {first} and {last}

Spróbuj swoich sił

#include <iostream>

using namespace std;

int main() {
    
    int numbers[] = {10, 20, 30, 40, 50, 60, 70, 80};
    
    // Wpisz kod dla ptr1
    
    // Wpisz kod dla ptr2
    
    // Wpisz kod dla ptr3
    
    // Wyświetl żądany komunikat
    
    
    
    // NIE ZMIENIAJ NICZEGO PONIŻEJ
    // ---------------------------------

    cout << "*ptr1 -> " << *ptr1 << endl;
    cout << "*ptr2 -> " << *ptr2 << endl;
    cout << "*ptr3 -> " << *ptr3 << endl;
    
    return 0;
}

Wszystkie lekcje w sekcji Wskaźniki w C++

Poćwicz samodzielnie: Kompilator C++ online