Matrici multidimensionali (C)
Un'espressione di indice inoltre possibile avere più indici, come segue:
expression1 [expression2] [expression3]...
Le espressioni di indice associano da sinistra a destra.L'espressione di indice più a sinistra, expression1**[expression2], viene valutato per primo.L'indirizzo risultante aggiungendo expression1 e expression2 forma un'espressione puntatore, quindi expression3 aggiunto a questa espressione del puntatore per formare una nuova espressione del puntatore, e così via fino a avere aggiunto l'ultima espressione di indice.l'operatore di riferimento indiretto (***viene applicato dopo l'espressione formattata l'ultima viene valutata, a meno che il valore del puntatore finale indirizzi un tipo di matrice (vedere gli esempi riportati di seguito).
Le espressioni con più indici fanno riferimento agli elementi “di matrici multidimensionali.„ Una matrice multidimensionale è una matrice i cui elementi sono matrici.Ad esempio, il primo elemento di una matrice tridimensionale è una matrice con due dimensioni.
Esempi
Per gli esempi seguenti, una matrice denominata prop viene dichiarato con tre elementi, che è una matrice di una 4 int valori.
int prop[3][4][6];
int i, *ip, (*ipp)[6];
Un riferimento a prop gli aspetti di matrice è simile al seguente:
i = prop[0][0][1];
Nel passaggio sopra riportata di seguito viene illustrato come fare riferimento al secondo utente int elemento di prop.Le matrici sono archiviate dalla riga, pertanto l'ultimo indice varia il più rapidamente, l'espressione prop[0][0][2] fa riferimento () al terzo elemento successivo della matrice, e così via.
i = prop[2][1][3];
Questa istruzione è un riferimento più complesso a un singolo elemento di prop.L'espressione viene valutata come segue:
Il primo indice, 2, viene moltiplicato per la dimensione di 4 una 2x6 int matrice e aggiunto al valore del puntatore prop.I punti di risultato nella terza matrice di una 4 prop.
Il secondo indice, 1, viene moltiplicato per la dimensione di 6 int allineare e aggiungere all'indirizzo rappresentato da prop[2].
Ogni elemento della matrice di 6 elementi è int valore, il indice finale, 3, viene moltiplicato per le dimensioni di un oggetto int prima di essere aggiunto a prop[2][1].Il puntatore risultante è destinato al quarto elemento della matrice di 6 elementi.
L'operatore di riferimento indiretto viene applicato al valore del puntatore.il risultato è int elemento all'indirizzo.
Queste due visualizzare seguenti di esempi in cui l'operatore di riferimento indiretto non viene applicato.
ip = prop[2][1];
ipp = prop[2];
Nel primo di queste istruzioni, l'espressione prop[2][1] è un riferimento valido alla matrice tridimensionale prop; fa riferimento a una matrice di 6 elementi (dichiarata in).Poiché il valore del puntatore è destinata a una matrice, l'operatore di riferimento indiretto non viene applicato.
Analogamente, il risultato dell'espressione prop[2] nella seconda istruzione ipp = prop[2]; è un valore del puntatore destinata a una matrice bidimensionale.