La dualitat taula/apuntador a C
Com és ben sabut existeix una certa dualitat entre el concepte de taula i d'apuntador a C. La relació s'esdevé del fet que, donada una taula com aquesta:
1 int t[10];
l'expressió t és un valor de tipus int * que apunta al primer element de la taula.
Més precisament, l'estàndard diu (6.3.2.1): Llevat de quan és operand de sizeof, & o és un literal string usat com inicialitzador d'un array, una expressió de tipus array de T es converteix a referència a T que apunta al primer element de l'array i no és un lvalue.
D'aquesta definició se n'han de fer dues consideracions:
Un identificador d'una taula té un significat diferent quan fa d'operand de sizeof, & o és un literal string usat com inicialitzador. Per exemple, en l'expressió int *p = &t t denota la taula i no l'apuntador al primer element de la taula, així p és un apuntador a una cel·la i no un apuntador a un apuntador a una cel·la. Considereu aquest programa com a exemple d'això:
A efectes pràctics t és un valor constant ja que no és un l-valor. Així doncs, tot i que el tipus de t és int * i no int *const, el valor de t no pot modificar-se.