Priorità degli abbonati degli array

0

Stavo leggendo una conferenza sugli array per Fortran 90 e mi sono imbattuto in questa frase: 'Fortran memorizza sempre per colonne: il primo indice varia più rapidamente del secondo e così via. '

Che cosa intende dire l'autore?

    
posta Fadi 06.04.2014 - 15:42
fonte

2 risposte

1

Questi sono davvero due punti separati, quindi affrontiamoli separatamente:

"Fortran memorizza sempre per colonna.": Ciò significa che a(i,j) denota l'elemento della matrice 2D a corrispondente alla colonna i , riga j .

"Il primo indice varia più rapidamente del secondo e così via.": Per avere un senso, aiuta a pensare agli array che vengono memorizzati su un supporto unidimensionale, indipendentemente dalla loro dimensione. Per un array 2D con m righe e n colonne, dovremmo memorizzare il primo elemento della seconda colonna immediatamente accanto all'ultimo elemento della prima colonna, ecc. Ciò equivale a "impilare" le colonne. La distanza in questa struttura 1D tra a(i,j) e a(i,j+1) è una, ma la distanza tra a(i,j) e a(i+1,j) è m , la lunghezza di una colonna. La quantità di distanza percorsa quando si aggiunge uno all'indice della colonna è più alta, quindi questo indice 'varia più rapidamente'.

    
risposta data 06.04.2014 - 16:52
fonte
0

Ad esempio, se hai un array A tale che A (1, 1) = 100, A (2, 1) = 200, A (1, 2) = 300, A (2, 2) = 400 e se hai la seguente riga nel tuo codice Fortran 90

print*, A

riceverai "100 200 300 400" nell'output anziché "100 300 200 400".

    
risposta data 07.04.2015 - 00:30
fonte

Leggi altre domande sui tag