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