Ko‘p o‘lchamli statik massivlar: C++ tilida massivlar elementining turiga cheklovlar qo‘yilmaydi, lekin bu turlar chekli o‘lchamdagi obyektlarning turi bo‘lishi kerak. Chunki kompilyator massivning xotiradan qancha joy (bayt) egallashini hisoblay olishi kerak. Xususan, massiv komponentasi massiv bo‘lishi mumkin, ya’ni «vektorlar-vektori» natijada matritsa deb nomlanuvchi ikki o‘lchamli massiv hosil bo‘ladi.
Agar matritsaning elementi ham vektor bo‘lsa, uch o‘lchamli massivlar – kub hosil bo‘ladi. Shu yo‘l bilan yechilayotgan masalaga bog‘liq ravishda ixtiyoriy o‘lchamdagi massivlarni yaratish mumkin.
Ikki o‘lchamli massivning sintaksisi quyidagi ko‘rinishda bo‘ladi:
[] []
Masalan, 10 x 20 o‘lchamli haqiqiy sonlar massivining e’loni:
float A[10] [20] ;
E’lon qilingan A matritsani ko‘rinishi 7.2-rasmda keltirilgan.
J
a : (a , a … … a , a ,),
a : (a , a … … a , a ),
…
i a : (…, …, … a …, …, …),
…
a : (a , a … … a , a ).
2-rasm. Ikki o‘lchamli massivning xotiradagi joylashuvi
Endi adres nuqtai – nazaridan ko‘p o‘lchamli massiv elementlariga murojaat qilishni ko‘raylik. Quyidagi e’lonlar berilgan bo‘lsin:
int a[3][2];
float b[2][2][2];
Birinchi e’londa ikki o‘lchamli massiv, ya’ni 2 satr va 3 ustundan iborat matritsa elon qilingan, ikkinchisida uch o‘lchamli – 3 ta 2x2 magritsadan iborat bo’lgan massiv e’lon qlingan.Uning elementlariga murojaat sxemasi:
Adres Ko’rsatkichlar massivi Qiymatlar
Bu yerda a[i] ko‘rsatkichda i-chi satrning boshlang‘ich adresi joylashadi, massiv elementiga a[i][j] ko‘rinishidagi asosiy murojaatdan tashqari vositali murojaat qilish mumkin: *(*(a+i)+j) yoki *(a[j]+j).