Skip to content

Показивачи

Оперативна меморија рачунара организована је као низ локација са придруженим адресама, где је најмања адресабилна јединица један бајт. Подаци у оперативној меморији записују се у узастопним бајтовима. На пример, податак типа int записују се у четири узастопна бајта, податак типа double у осам узастопних бајтова итд. Показивачка променљива садржи меморијску адресу податка на кога показује (то је увек адреса бајта са најнижом адресом, односно, адреса првог бајта у низу узастопних бајтова).

Иако су меморијске адресе цели бројеви, показивачки типови се у програмском језику C стриктно разликују од целобројног типа. Такође, у програмском језику C постоји више показивачких типова, где се показивачки тип одређује на основу типа податка на који показује.

Показивачке променљиве декларишемо на следећи начин:

tip *identifikator;

где је tip тип податка на који се показује, а identifikator име показивачке променљиве. Приликом декларације није битно да ли постоји размак између звездице и типа или звездице и идентификатора – звездица се увек односи на идентификатор. У следећем примеру:

int* pa;
int *pb;
int * pc;

декларисали смо показивачкe променљивe на целе бројеве pa, pb и pc.

Унарни оператор & (којег називамо адресним оператором, односно оператором референцирања) враћа меморијску адресу свог операнда, стим да операнд не може бити константа нити израз. У следећем примеру:

int a = 3, *pa;
pa = &a;

у меморијски простор целобројне променљиве a уписана је вредност 3, а у меморијски простор показивачке променљиве pa уписана је меморијска адреса променљиве a. За pa кажемо да показује на a. Ово смо могли записати и у једној линији:

int a = 3, *pa = &a;

Поред улоге означавања показивачких променљивих, унарни оператор * (кога називамо оператором дереференцирања) враћа вредност која се налази у меморијском простору на коју показивачка променљива показује, увек водећи рачуна о типу податка који се у њој налази. У следећем примеру:

int a = 3, *pa = &a;
printf("%d", *pa);

у простор променљиве a уписана је вредност 3, у простор променљиве pa уписана је адреса променљиве a и на крају, одштампана је вредност на коју показује pa. Шта ће се исписати на излазу? Исписаће се 3 јер је вредност на коју показује pa вредност променљиве a.