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.