Re[4]: Передача указателя на двумерный массив в функцию
От: Багер  
Дата: 08.12.02 16:14
Оценка:
Здравствуйте, 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] );
}

Мы убеждаемся, что указатель передаётся только указателем, а не целый массив тащит за собой. Собственно, на то он и указатель ))
Ваша программа работает корректно? Один звонок и я всё исправлю!

Делаю потенциальные фичи :))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.