Condividi tramite


Matrici unidimensionali

Un'espressione di suffisso seguita da un'espressione tra parentesi quadre ([]) è una rappresentazione in formato di un elemento di un oggetto di matrice.Un'espressione di indice rappresenta il valore all'indirizzo specificato che è espressione percorsi di suffisso-espressione una volta espresso come

postfix-expression [ expression ]

In genere, il valore rappresentato da suffisso-espressione è un valore del puntatore, quali un identificatore di matrice e espressione è un valore integrale.Tuttavia, tutto ciò che è sintatticamente necessario è quella dell'espressione è di tipo puntatore e l'altro è di tipo integrale.Quindi il valore integrale potrebbe essere in suffisso-espressione la posizione e il valore del puntatore potrebbero essere in parentesi in espressione, o “indice,„ posizione.Ad esempio, il codice è valido:

// one_dimensional_arrays.c
int sum, *ptr, a[10];
int main() {
   ptr = a;
   sum = 4[ptr];
}

Le espressioni di indice sono in genere utilizzate per fare riferimento agli elementi di matrice, ma è possibile applicare un indice a un puntatore.Qualsiasi ordine dei valori, espressione deve essere racchiusi tra parentesi ()[]).

L'espressione di indice viene valutata aggiungendo il valore integrale al valore del puntatore, quindi applicando l'operatore di riferimento indiretto (*) al risultato.(Vedere Riferimento indiretto e l Operators per una discussione l'operatore di riferimento indiretto.) In effetti, per una matrice unidimensionale, le quattro espressioni sono equivalenti, presupponendo che a è un puntatore e b è un Integer:

a[b]
*(a + b)
*(b + a)
b[a]

In base alle regole di conversione per l'operazione di addizione (sono valide operatori additivi), il valore integrale viene convertito in un offset di indirizzo moltiplicandolo per la lunghezza del tipo utilizzato dal puntatore.

Si supponga, ad esempio l'identificatore line fa riferimento a una matrice di int valori.La procedura riportata di seguito viene utilizzata per valutare l'espressione di indice line[ i ]:

  1. il valore Integer i viene moltiplicato per il numero di byte definiti come lunghezza di int elemento.il valore convertito di i rappresenta i int percorsi.

  2. Questo valore convertito viene aggiunto al valore del puntatore originale (line) per rendere un indirizzo con offset i int percorsi da line.

  3. L'operatore di riferimento indiretto viene applicato il nuovo indirizzo.Il risultato è il valore dell'elemento di matrice in tale posizione (intuitivo, line [ i ]).

L'espressione di indice line[0] rappresenta il valore del primo elemento della riga, poiché l'offset dall'indirizzo rappresentato da line è 0.Analogamente, un'espressione come line[5] si riferisce alle posizioni dell'offset cinque degli elementi della riga, o al sesto elemento della matrice.

Vedere anche

Riferimenti

Operatore di indice: []