In base a questo topic, il confronto del puntatore con un ultimo elemento di un array con l'oggetto è consentito.">" con uno prima del primo elemento di un oggetto array
E secondo @jalf commento, confrontando puntatore con una prima del primo elemento di un oggetto array è vietato.
example1
int array[10];
int *ptr;
for(ptr=&array[9]; ptr>(array-1); ptr--) {...}
example2
int array[10];
int *ptr;
for(ptr=&array[9]; ptr>=(array); ptr--) {...}
1) Sono entrambi example1 e esempio2 proibito?
2) Esiste la prova dello standard C che confronta il puntatore con uno prima che il primo elemento di un oggetto dell'array sia vietato?
Per quanto riguarda il motivo: lo speciale consente di rappresentare tutte le sezioni di elementi (all'interno di un array) utilizzando 2 puntatori. Se dovessi puntare al primo e all'ultimo elemento della sezione, non potresti rappresentare una sezione vuota; ma avendo un intervallo semiaperto come una rappresentazione, puoi: '[p, p)' rappresenta una sezione vuota. –