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] */ }