А>Вот этот код не компилируется:
А>#include "stdafx.h"
А>int matrix[2][2] =
А>{
А> 1, 2,
А> 3, 4
А>};
А>void test(int *pM)
А>{
А> printf("%d", pM[1][0]); // error C2109
А>}
А>int _tmain(int argc, _TCHAR* argv[])
А>{
А> test(matrix); // error C2664
А> return 0;
А>}
А>error C2109: subscript requires array or pointer type
А>error C2664: 'test' : cannot convert parameter 1 from 'int [2][2]' to 'int *'
А>Наверное, лет пять не работал с многомерными массивами. Вот теперь приспичило и на тебе... Подскажите, люди добрые, как это правильно делается?
Если все размеры массива фиксированы (кроме, может быть, самой первой), то так
void test(int (*pM)[2])
{
printf("%d", pM[1][0]);
}
Если все размеры точно фиксированы, то можно еще так
void test(int (&M)[2][2])
{
printf("%d", M[1][0]);
}
или так
void test(int (*pM)[2][2])
{
printf("%d", (*pM)[1][0]);
}
|