Na wstępie przypomnę, że nazwa tablicy jest wskaźnikiem na jej pierwszy element. Oznacza to, że możemy odnieść się to tego elementu za pomocą nazwy tablicy i indeksu o wartości 0 lub poprzez ten wskaźnik. Popatrzmy na przykład:
int tablica[5] = {1 ,2, 3 , 4 ,5}; //inicjacja tablicy
//odwołanie się za pomocą indeksu
cout<<"Pierwszy element tej tablicy to: "<<tab[0]<<endl;
//odwołanie się za pomocą wskaźnika
cout<<"to także pierwszy element tej tablicy: "<<*tab;
Po elementach tablicy możemy poruszać się przy użyciu indeksów podając kolejne numery komórek, począwszy od 0, jak również odwiedzając kolejne komórki tablicy przy pomocy wskaźnika.
W przypadku elementów, które zajmują np. 4 bajty pamięci (liczby typu int), będziemy przy każdym zwiększeniu wskaźnika przeskakiwać o te cztery bajty, żeby przejść do następnej wartości w tablicy. W przypadku tablicy typu char przeskok będzie o jeden bajt - tyle ile zajmuje typ char. Reguła ta dotyczy każdego innego typu.
Przeanalizujmy program, który pokazuje sposób poruszania się po elementach tablicy z wykorzystaniem wskaźników:
#include<iostream>
using namespace std;
int main()
{
int tab[10] = {1, 2 ,4, 5, 6, 4, 3, 2, 1, 0};
cout<<*tab<<endl; //wypisanie 1 elementu tablicy
cout<<*(tab+3)<<endl; //wypisanie 4 elementu tablicy
for(int i=0;i<10;i++)
cout<<*(tab+i)<<" "; //wypisanie elementów tablicy
//poruszając się po niej wskaźnikiem
return 0;
}
Wyjście:
1 5 1 2 4 5 6 4 3 2 1 0