Здравствуйте, sndralex, Вы писали:
S>Здравствуйте, Багер, Вы писали:
S>Первая строка должна быть void aa( int _a[12][10] )? или оставить скобки пустыми как у Вас,
Не принципиально, т.к. компилятору нужно знать только через сколько данных пойдёт следующая размерность.
Как справедливо заметили выше, запись int a[144] в памяти выглядит точно так же, как и int a[12][12]. Вот с трёхмерными массивами, у меня на экзамене были проблемы. Он, по словам препода, не эквивалентен записи int a[1728], как-то по-другому. Сейчас с ходу тоже не скажу.
S>и второй вопрос при передаче массива таким образом происходит копирование или все таки — передача указателя?
Проведя несложные добавления к коду:
void aa( int _a[][10] )
{
_a[2][9]= 292;
ShowMessage( _a[2][9] );
}
void __fastcall TForm2::Button2Click(TObject *Sender)
{
int a[12][10];
a[2][9]= 29;
aa( a );
ShowMessage( a[2][9] );
}
Мы убеждаемся, что указатель передаётся только указателем, а не целый массив тащит за собой. Собственно, на то он и указатель ))