Array e puntatori non sono la stessa cosa in C, anche se sono correlati e possono essere usati allo stesso modo. Finora siamo tutti d'accordo.
Tuttavia, non vedo perché gli array siano stati inclusi in C, quando i puntatori avrebbero potuto svolgere il loro lavoro perfettamente.
Non sto dicendo di rimuovere la notazione dell'array (ad es. a [5] o int a [4] = {0,1,2,3};), che è abbastanza utile e conveniente. Ma potresti avere la stessa notazione che funziona in cima ai puntatori (come è il caso), come misura cosmetica. Quindi la notazione dell'array non è un motivo per avere array, solo la notazione!
L'unica differenza che vedo è che gli array sono puntatori costanti e la dimensione della memoria a cui puntano non può essere modificata. Ma questo può essere ottenuto anche con i puntatori, rendendoli costanti (la memoria non sarebbe di dimensioni fisse, ma non sono sicuro che questo sia un problema).
Quindi, perché non avere solo i puntatori e lasciare che il programmatore decida come deve comportarsi il puntatore (vale a dire, costante, non costante, dimensione fissa, dimensione variabile, ecc.)?