Se l'espressione   type name[count]    è scritta in qualche funzione, allora dici al compilatore C di allocare sul frame dello stack   sizeof(type)*count    byte e calcola l'indirizzo del primo elemento dell'array. 
 Se l'espressione   type name[count]    è scritta al di fuori di tutte le definizioni di funzioni e struct, allora dici al compilatore C di allocare sul segmento dati   sizeof(type)*count    byte e calcola l'indirizzo del primo elemento dell'array. 
   name    è in realtà un oggetto costante che memorizza l'indirizzo del primo elemento dell'array e ogni oggetto che memorizza un indirizzo di una certa memoria è chiamato puntatore, quindi questo è il motivo per cui si tratta   name    come puntatore anziché un array. Si noti che è possibile accedere agli array in C solo tramite puntatori. 
 Se   count    è un'espressione costante che valuta zero, allora comunichi al compilatore C di allocare zero byte sul frame dello stack o sul segmento dati e restituire l'indirizzo del primo elemento dell'array, ma il problema nel fare questo è che il primo elemento dell'array di lunghezza zero non esiste e non puoi calcolare l'indirizzo di qualcosa che non esiste. 
 Questo è razionale quell'elemento n.    count+1    non esiste in   count    -length array, quindi questo è il motivo per cui il compilatore C vieta di definire l'array a lunghezza zero come variabile all'interno e all'esterno di una funzione, perché qual è il contenuto di   name    quindi ? Quale indirizzo   name    memorizza esattamente? 
 Se   p    è un puntatore, l'espressione   p[n]    equivale a   *(p + n)    
 Dove l'asterisco * nell'espressione destra è operazione di dereferenziazione del puntatore, che significa accedere alla memoria puntata da   p + n    o accedere alla memoria il cui indirizzo è memorizzato in   p + n   , dove   p + n    è espressione del puntatore, esso prende l'indirizzo di   p    e aggiunge a questo indirizzo il numero   n    moltiplica la dimensione del tipo del puntatore   p   . 
 È possibile aggiungere un indirizzo e un numero? 
 Sì, è possibile, perché l'indirizzo è un numero intero senza segno comunemente rappresentato in notazione esadecimale.