Top.Mail.Ru
Ответы

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

есть функция прототип: 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)’|

Подскажите что не так делаю я раньше с двойными указателями не работал...

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
8лет

Статический массив передается не двойным, а одинарным указателем на его начало.

Аватар пользователя
Мудрец
8лет

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;
}

Аватар пользователя
Мастер
8лет

может с * звездочкой надо. cannot convert ‘double’ to ‘double**’