Wskaźnik wędruje po tablicy
Wskaźniki i napisy w tablicach char - Podstawy C++ (C++)
doubleAll nie używa indeksów: wskaźnik p pokazuje kolejne elementy, bo p = p + 1 przesuwa go o jeden element (o tyle bajtów, ile zajmuje int). Funkcja zmienia oryginalną tablicę, bo pracuje na jej adresie.
#include <iostream>
using namespace std;
// tablica w parametrze to wskaznik na pierwszy element
int sum(int *t, int n) {
int total = 0;
for (int i = 0; i < n; i++) {
total += *(t + i);
}
return total;
}
// wskaznik idzie po tablicy: p = p + 1 przesuwa go na nastepny element
void doubleAll(int *p, int n) {
for (int i = 0; i < n; i++) {
*p = *p * 2;
p = p + 1;
}
}
int main() {
int t[5] = {4, 9, 1, 7, 3};
int *p = t; // nazwa tablicy to adres jej pierwszego elementu
cout << *p << " " << *(p + 1) << " " << p[2] << endl;
for (int i = 0; i < 5; i++) {
cout << *(t + i) << " ";
}
cout << endl;
cout << "suma = " << sum(t, 5) << endl;
cout << "suma od t[2] = " << sum(t + 2, 3) << endl;
doubleAll(t, 5);
for (int i = 0; i < 5; i++) {
cout << t[i] << " ";
}
cout << endl;
return 0;
}Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Podstawy C++·Zaloguj się, aby zapisać postęp na koncie.