Prezentam în cele ce urmeaza unele aspecte ale relatiei dintre pointeri si tablouri.
int tablou[5]; int *tablou_ptr; tablou_ptr=&tablou[0];Dupa secventa de mai sus, pointerul tablou_ptr va indica spre primul element al tabloului, deci spre începutul zonei de memorie unde este stocat tabloul. Deoarece variabila tablou este vazuta în C ca un pointer, acelasi efect s-ar fi obtinut prin atribuirea: tablou_ptr=tablou;.
Pentru a accesa elementele tabloului, se incrementeaza valoarea pointerului, astfel daca tablou_ptr=tablou; atunci *(tablou_ptr++) va returna valoarea lui tablou[0], dupa care tablou_ptr va arata spre tablou[1].
Atentie! *(tablou_ptr++) va returna valoarea lui tablou[0], dupa care se va incrementa valoarea lui tablou_ptr, aratând spre tablou[1]. În schimb, (*tablou_ptr)++ va incrementa valoarea spre care arata tablou_ptr, returnând astfel tablou[0]++.
În acelasi context, propunem ca exercitiu rularea urmatorului exemplu:
#include <stdio.h>
void main(void)
{
int t[4]={0, 1, 2, 3};
int *p=&t[1];
printf("%d\n", *p++); /* afiseaza valoarea
lui t[1] */
printf("%d\n", *++p); /* afiseaza valoarea
lui t[3] */
printf("%d\n", ++*p); /* afiseaza valoarea
incrementata a lui t[3] */
}