Mail.RuПочтаМой МирОдноклассникиИгрыЗнакомстваНовостиПоискВсе проекты

Помогите передать массив в функцию С++

Ученик (201), на голосовании 1 месяц назад
есть функция прототип: double** transpose(double** a,int n, int m)
Нужно передать туда массив двухмерный делаю так
int main()
{
float **response;
double ary[3][5] = {
{ 1.1, 2.2, 3.3, 4.4,5.5 },
{ 2.22, 4.44, 6.66, 8.88, 10.10 },
{ 3.333, 6.666, 9.999, 12.1212,15.1515 }
};
transpose(**ary,3,5);

return 0;
}
Выдает ошибку /tmp/matrix/main.cpp|43|error: cannot convert ‘double’ to ‘double**’ for argument ‘1’ to ‘double** transpose(double**, int, int)’|

Подскажите что не так делаю я раньше с двойными указателями не работал...
Голосование за лучший ответ
Статический массив передается не двойным, а одинарным указателем на его начало.
Комментарий удален
Krab Bark Оракул (89270) Не знаю, что у Вас собирается делать функция transpose. Пусть, к примеру, печатает переданный ей массив. #include "iostream" using namespace std; transpose(double *b,int n,int m){ for(int i=0;i< n;i++){for(int j=0;j< m;j++)cout<< b[n*i+j]<<'\t'; cout<<'\n';}} int main(){ double ary[3][5] = { { 1.1, 2.2, 3.3, 4.4,5.5 }, { 2.22, 4.44, 6.66, 8.88, 10.10 }, { 3.333, 6.666, 9.999, 12.1212,15.1515 } }; transpose(*ary,3,5); }
может с * звездочкой надо. cannot convert ‘double’ to ‘double**’
Комментарий удален
Степан Рогав Мастер (1000) с обоих убирал? transpose(**ary,3,5); float **response;
void transpose(double *a, int rows, int cols)
{
for (size_t i = 0; i < rows; i++, putchar('\n'))
for (size_t j = 0; j < cols; j++)
printf("%5g ", a[ rows * i + j ]);
}

int main(int argc, char **argv)
{
double arr[ 3 ][ 3 ] =
{
4, 2, 4,
3, 2, 1,
9, 9, 9
};

transpose(&arr[ 0 ][ 0 ], 3, 3);
return 0;
}
Похожие вопросы
Также спрашивают