Wskaźniki i tablice
Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 5 z 56.
Tablice i wskaźniki mają w C++ szczególną relację. Gdy deklarujesz tablicę, jej nazwa w rzeczywistości działa jak wskaźnik do pierwszego elementu tej tablicy. To powiązanie pozwala używać wskaźników do pracy z tablicami na wiele sposobów.
Rozważ tę deklarację tablicy:
int numbers[5] = {10, 20, 30, 40, 50};
int* ptr = numbers; // ptr wskazuje teraz na numbers[0]Tutaj numbers jest równoważne &numbers[0] — oba wyrażenia dają adres pierwszego elementu. Wskaźnik ptr wskazuje teraz to samo miejsce.
Gdy masz już wskaźnik do tablicy, możesz używać arytmetyki wskaźników, aby poruszać się po jej elementach. Dodanie 1 do wskaźnika przesuwa go do następnego elementu tego samego typu:
ptr++; // Teraz wskazuje na numbers[1]
ptr = ptr + 2; // Teraz wskazuje na numbers[3]Możesz dereferencjonować wskaźnik w dowolnej pozycji, aby uzyskać dostęp do wartości: *ptr daje wartość w bieżącej pozycji, a *(ptr + 1) daje wartość następnego elementu.
Ta relacja między wskaźnikiem a tablicą umożliwia iterowanie po tablicach za pomocą wskaźników zamiast tradycyjnych pętli opartych na indeksach, oferując alternatywne podejście do przechodzenia przez tablicę.
Wyzwanie
ŁatwyUtwórz program, który używa wskaźnika do przechodzenia przez tablicę i wyświetlania każdego elementu, demonstrując zależność między wskaźnikami a tablicami.
Otrzymujesz następującą tablicę:
int values[6] = {15, 23, 8, 42, 17, 31};Twój program powinien:
- Utworzyć wskaźnik o nazwie
ptr, który wskazuje na pierwszy element tablicyvalues - Użyć arytmetyki wskaźników, aby przejść przez wszystkie 6 elementów tablicy
- Wyświetlić każdy element przez dereferencję wskaźnika na każdej pozycji
- Przesunąć wskaźnik na następny element za pomocą arytmetyki wskaźników (zwiększyć wartość wskaźnika)
Wyświetl każdy element w osobnym wierszu w następującym formacie:
Element: [value]Wynik powinien przedstawiać wszystkie 6 elementów w kolejności, w jakiej występują w tablicy, uzyskanych przez dereferencję wskaźnika, a nie przez indeksowanie tablicy.
Spróbuj swoich sił
#include <iostream>
using namespace std;
int main() {
// Dana tablica
int values[6] = {15, 23, 8, 42, 17, 31};
// TODO: Utwórz wskaźnik o nazwie 'ptr', który wskazuje na pierwszy element tablicy
// TODO: Użyj pętli, aby przejść przez wszystkie 6 elementów za pomocą arytmetyki wskaźników
// TODO: Wypisz każdy element, dereferencjonując wskaźnik
// TODO: Przesuń wskaźnik na następny element za pomocą arytmetyki wskaźników
return 0;
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Wskaźniki i pamięć
Czym jest wskaźnik?Operator pobrania adresuOperator dereferencjiWskaźniki zeroweWskaźniki i tabliceDynamiczne zarządzanie pamięcią za pomocą „new”Zwalnianie pamięci za pomocą „delete”Podsumowanie — ćwiczenia ze wskaźnikami2Wektory (tablice dynamiczne)
Wprowadzenie do std::vectorTworzenie wektoraDodawanie elementówDostęp do elementówRozmiar wektoraIterowanie za pomocą pętli forPętla for oparta na zakresieUsuwanie elementówPodsumowanie — operacje na wektorach5Projekt: Narzędzie do zarządzania zapasami
Konfiguracja projektuDodawanie i aktualizowanie produktów3Projekt: narzędzie do listy zadań
Przegląd projektuDodawanie zadaniaPoćwicz samodzielnie: Kompilator C++ online