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 1Jak 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 3n = 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 elementsMożemy wykorzystać te 3 techniki do wykonywania wielu przydatnych operacji na wskaźnikach i rozwiązywania problemów w naszych codziennych zadaniach
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wyzwanie
ŁatwyBiorą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
ptr2i przypisz mu wartośćptr - Zwiększ
ptr2, aby przejść do czwartego elementu - Utwórz
ptr3i przypisz mu wartośćptr2 - Zmniejsz
ptr3o 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++
1Podstawy wskaźników
Wprowadzenie do wskaźnikówDeklaracja i inicjalizacjaArytmetyka – przypisanieArytmetyka – operacjeWskaźniki stałeWskaźniki i tablice2Wskaźniki i referencje
Wskaźniki jako parametryReferencje - &Referencje jako parametryWskaźniki a referencje3Dynamiczna alokacja pamięci
Operatory new i deleteWycieki pamięciTablica dynamicznaTablica dynamiczna — wstawianiePoćwicz samodzielnie: Kompilator C++ online