I am trying to understand how C handles arrays, in this case, reading a two-dimensional array, as if it were a one-dimensional array.
Given this simple C program
#include <stdio.h> int main(int argc, char *argv[]){ int array[4][4]; int i, j; for(i = 0; i < 4; i++){ for(j = 0; j < 4; j++){ array[i][j] = (i+1)*(j+1); printf("%d ", array[i][j]); } printf("\n"); } for(i = 0; i < 16; i++){ printf("%d ", array[i]); } printf("\n"); }
I get this strange conclusion.
1 2 3 4 2 4 6 8 3 6 9 12 4 8 12 16 56319776 56319792 56319808 56319824 56319840 56319856 56319872 56319888 56319904 56319920 56319936 56319952 56319968 56319984 56320000 56320016
What is printed in the second for loop?
source share