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

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

Восстановить пароль Регистрация
 
Max64
19 / 19 / 5
Регистрация: 27.10.2012
Сообщений: 156
07.01.2013, 17:50     Передача двумерного массива в функцию #1
Не нашел в поиске, как правильно передавать в функцию в качестве параметра двумерный массив произвольного размера, чтобы в функции была возможность изменять значения в массиве?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11820 / 6799 / 769
Регистрация: 27.09.2012
Сообщений: 16,874
Записей в блоге: 2
Завершенные тесты: 1
07.01.2013, 17:53     Передача двумерного массива в функцию #2
C++
1
2
template<typename T, int N>
void foo(T (&pArr)[N][N])
Если выделен в куче, то можно указатель передать.
ksuna
 Аватар для ksuna
6 / 6 / 0
Регистрация: 28.11.2012
Сообщений: 27
07.01.2013, 17:56     Передача двумерного массива в функцию #3
а каким образом создается передаваемый массив?
Max64
19 / 19 / 5
Регистрация: 27.10.2012
Сообщений: 156
07.01.2013, 17:59  [ТС]     Передача двумерного массива в функцию #4
Статический массив
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11820 / 6799 / 769
Регистрация: 27.09.2012
Сообщений: 16,874
Записей в блоге: 2
Завершенные тесты: 1
07.01.2013, 18:43     Передача двумерного массива в функцию #5
Цитата Сообщение от Max64 Посмотреть сообщение
Статический массив
Можно вообще тогда юзать адресную арифметику:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <cstdlib>
#include <ctime>
void FillRandom(int *arr,int height,int width){
    srand(time(NULL));
    for(int i=0;i<height;++i)
        for(int j=0;j<width;++j)
            *(arr+i*width+j)=rand()%10;
}
void cout_arr(int *arr,int height,int width){
    for(int i=0;i<height;++i){
        for(int j=0;j<width;++j)
            std::cout<<*(arr+i*width+j)<<' ';
        std::cout<<std::endl;
    }
}
 
 
int main(){
    const int h=20,w=30;
    int arr[h][w];
    FillRandom(&arr[0][0],h,w);
    cout_arr(&arr[0][0],h,w);
    return 0;
}
Передача двумерного массива в функцию
Yandex
Объявления
07.01.2013, 18:43     Передача двумерного массива в функцию
Ответ Создать тему
Опции темы

Текущее время: 16:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru