Non riesco a trovare nei documenti standard C in particolare dove dice che gli array multidimensionali sono contigui. Mentre può essere implicito dal fatto che gli elementi dell'array sono contigui, voglio una prospettiva dalla comunità.Gli array multidimensionali C sono contigui senza buchi?
Il codice seguente stampa i numeri nell'ordine in cui mi sarei aspettato, che è 1 - 9.
#include <stdio.h>
int main()
{
int a[][3] = {{1,2,3},{4,5,6},{7,8,9}};
int* p = (int*)a;
int i;
for (i = 0; i < sizeof(a)/sizeof(int); i++)
printf("%d ",p[i]);
return 0;
}
Poiché gli array multidimensionali sono array di matrici, gli elementi sono contigui (credo). –
È meglio - è un linguaggio abbastanza comune per elaborare array bidimensionali con un ciclo singolo anziché nidificato. Tutto questo codice sarebbe rotto se questo non fosse il caso. –
Un 'array [x] [y]' di tipo 'z' è garantito per occupare (x * y * sizeof (z)) ** solo **. Nota che 'sizeof (z)' non è in tutti i casi garantito per occupare la quantità massima di bit necessari per il solo tipo - Può essere più grande e 'sizeof (char)', ad esempio, può essere superiore a 8 su alcune CPU . – tofro