Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Передача двумерного массива в функцию - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как передать указатель на структуру в функцию http://www.cyberforum.ru/cpp-beginners/thread667524.html
Подскажите как передать указатель *arr на структуру в функцию2, чтобы в ней использовать уже заполненные массивы: void func1() //функия 1 { typedef struct //объявление структуры { float p;...
C++ Лабораторная работа по теме Операторы ветвления. Люди помогите пожалуйста зделать лабу, по теме Операторы ветвления. F= a(x*x)-b; при x-1<0 и b-x!=0 (x+1)!; при x-1>0 и b+x=0 x/c; в остальных случаях http://www.cyberforum.ru/cpp-beginners/thread667522.html
C++ Найти НОД двух целых чисел
Найти НОД двух целых чисел. Помогите пожалуйста)
C++ Определить сумму чисел, которые при деление на n дают в остатке q
С клавиатуры вводятся числа. Окончание ввода – 0. Определить сумму только тех чисел, которые при деление на n дают в остатке q
C++ Использование вектора http://www.cyberforum.ru/cpp-beginners/thread667495.html
Здраствуйте. Написал такую программку: #include<vector.h> #include<iterator.h> #include<conio.h> #include<iostream.h> template <typename T> bool palindrome(const vector &a); int main(){
C++ Как определить количество перестановок и сравнений У меня есть алгоритм Quicksort как определить количество перестановок и сравнений?? #include <iostream> #include <conio.h> #include <time.h> using namespace std; void quickSort(int arr, int... подробнее

Показать сообщение отдельно
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
09.10.2012, 22:21
Цитата Сообщение от dota Посмотреть сообщение
выдает ошибку о том , что не может перевести переменную к типу double ** . Довольно странно , учитывая то , что с одномерным массивом проблем нет . Что делать ?
Ничего странного, если учитывать такую вещь: в функцию передаётся не массив, а указатель на его первый элемент, поэтому и работает ваш вариант с одномерным массивом. В случае с двумерным массивом всё чуть сложнее - в функцию опять-таки передаётся указатель на первый элемент массива, но теперь это не просто массив, а массив массивов, поэтому параметр функции - указатель на массив. А у вас - указатель на указатель на double.
Передать двумерный массив в функцию можно так:
C++
1
2
void func(double arr[100][500]);
void func(double (*arr)[500]);
Добавлено через 1 минуту
Ну или опустить число в квадратных скобках.

Добавлено через 2 минуты
Цитата Сообщение от dota Посмотреть сообщение
изменять сигнатуру функции я не хочу ,ибо так она записана в более общем виде
В наиболее общем виде это будет так:
C++
1
2
template <typename T, int N, int M>
void func(T (&arr)[N][M]);
И кстати, при таком подходе функции известен размер массива, что полезно. Правда, такой вариант не все старые компиляторы поддерживают (MSVS 6.0 не поддерживает, например).
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru