Rozlozme si zapis
int mat[3][3] = {{5,6,2},{7,8,1},{3,6,5}};
-prva lomena zatvorka s trojkou pri mat znamena, ze premenna
mat bude mat 3 prvky ( cize pole o velkosti troch prvkov ). Dalsia trojka v lomenej zatvorke znamena, ze kazdy prvok bude mat dalsie tri prvky. Kedze sa jedna o pole typu
int, samotne pole bude mat velkost 3 * 3 * velkost typu int, co ziskas zapisom
sizeof(int) ( vacsinou sa jedna o 4 bajty, zavisi to od prekladaca a inych faktorov ). To znamena, sizeof(mat) bude 3 * 3 * 4 = 36 bajtov.
mat[3] je iba prvy prvok pola mat, a kedze prvy prvok obsahuje iba tri cisla typu int, tak to je 3 * sizeof(int) = 3 * 4 = 12.
Staci si to iba takto jednoducho porozkladat a myslim, ze hned sa to lahsie chape. V kazdom pripade, stale si mozes nejaku konkretnu hodnotu sizeof() nechat vypisat, ak si nie si isty:
Kód:
printf( "%d", sizeof( mat[0] ) );