In primo luogo, è stato citato di un paragrafo, la prima parte spiega di cosa si fa riferimento, includo il paragrafo qui:
Quando due puntatori sono confrontati, il risultato dipende dalle posizioni relative a lo spazio indirizzo degli oggetti puntati. Se due puntatori ai tipi di oggetto puntano entrambi allo stesso oggetto , o entrambi puntano uno sull'ultimo elemento dello stesso oggetto matrice, essi sono uguali a confronto . Se gli oggetti puntati sono membri dello stesso oggetto aggregato, i puntatori per strutturare i membri dichiarati in seguito confrontano più dei puntatori ai membri dichiarati in precedenza nella struttura e i puntatori agli elementi di matrice con indice maggiore confrontano valori maggiori di puntatori agli elementi di lo stesso array con valori di indice inferiori. Tutti i puntatori ai membri dello stesso oggetto unione sono uguali. Se l'espressione P punta a un elemento di un oggetto matrice e l'espressione Q punta all'ultimo elemento dello stesso oggetto matrice, l'espressione del puntatore Q + 1 è maggiore di P. In tutti gli altri casi, il comportamento non è definito.
Fondamentalmente, il bit eri fa riferimento si riferisce al fatto che normalmente un puntatore deve sempre punto situato ad un solo oggetto basamento, ad un elemento di un array di oggetti o uno oltre la fine di un array di oggetti. Come puoi vedere, normalmente l'incremento di un puntatore che punta già sull'ultimo elemento di un array produce un puntatore non valido, e infatti questo puntatore nello standard non deve mai essere dereferenziato, tuttavia può essere usato per un caso speciale che è quello può essere impostato o confrontato con un altro puntatore.
Questo è utile in un programma in cui si incrementa un puntatore, quindi si controlla se è oltre la fine dell'array e termina se lo fa. Per esempio.
int foo = 0;
int ArrSize = 6;
int bar[ArrSize];
while(foo < ArrSize)
{
foo++;
printf("%d", bar + 3 < bar + foo);
}
sarà legale, anche in quest'ultimo caso in cui sottolinea uno oltre la fine della matrice foo.
Nota questo esempio è molto elaborato ma dimostra il punto.
Se non fosse per questa regola, questo programma sarebbe un comportamento indefinito.
Ti manca la frase precedente alla precedente: "i puntatori agli elementi di matrice con valori di indice più grandi confrontano maggiore dei puntatori agli elementi della stessa matrice con indice inferiore".Quello che hai citato è un'eccezione per consentire intervalli semiaperti come ['a',' a + 3'). – dyp
@DyP, oh, bene. Ho dovuto leggerlo altre 5 volte per capirlo. Un'altra domanda stupida forma il mio lato :( – Vorac
È lo standard, alcune persone sostengono che è lo standard per formulazione difficile e non intuitiva;) – dyp