Programowanie i algorytmy

Tablica a wskaźnik

powrót

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ż przeskakując kolejne komórki tablicy z wykorzystaniem wskaźnika.

Warto zauważyć, że 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 dostać się do następnej wartości 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>
#include<cstdlib>
 
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
        cout<<endl;  
 
  system("pause");  
 
  return 0;
}
 

 

Wyjście:

1
5
1 2 4 5 6 4 3 2 1 0