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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.86
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
#1

Как правильно передать в функцию указатель на двумерный массив? - C++

26.02.2012, 20:51. Просмотров 6084. Ответов 5
Метки нет (Все метки)

Сабж
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
26
27
28
29
30
31
32
33
34
#include <windows.h>
#include <stdio.h>
using namespace std;
 
//ОТ безысходности сделал матрицу глобальной
int A [4][4]= {2, 3,4, 6, 7, 8, 9,0, 2, 3, 4, 5, 6, 7, 8, 9};
 
int max_matr (int** matrix) {
 printf ("matrix= %x\n", matrix);
 
 //Тут генерит исключение
 printf ("matrix[0][0]= %d\n", matrix[0][0]);
}
 
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
int main () {
 
 
 //Объявляем и заполняем матрицу
  for (int i= 0; i< 4; i++) {
   for (int j= 0; j< 4; j++) {
    printf ("%*d  ",4, A[i][j]);
   } 
   printf ("\n");
  }    
 
 printf ("A[0][0]= %d\n", A[0][0]);
 printf ("A= %x\n", A);
 max_matr((int**)&A[0][0]);
 
 getchar (); 
 return 0;
}
Адрес передаётся один и тот же, ЧЯДНТ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 20:51     Как правильно передать в функцию указатель на двумерный массив?
Посмотрите здесь:

Как передать в функцию указатель на двумерный массив заранее неизвестного размера? - C++
Ребята, скажите пожалуйста, как реализовать такую идею? Необходимо передать в функцию двумерный массив, чтобы она изменала его элементы....

Как правильно передать массив через указатель? - C++
#pragma once #include &lt;vector&gt; class TOMathModel { public: TOMathModel(void); ~TOMathModel(void);

Как передать в функцию двумерный динамический массив? - C++
#include &lt;iostream&gt; #include&lt;time.h&gt; #include&lt;cstdlib&gt; using namespace std; void zap(int array, int n) { ...

Как правильно передать массив в функцию? - C++
Возникла такая загвоздка: написал три функции для работы с массивом. Вроде всё компилирует, кроме вызова этих функций, а конкретнее при...

Как передать массив (двумерный/одномерный вектор) в функцию? - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int n,m;//סענמך ט סעמכבצנג void searchmin(int g,int mm,int i,int...

Как передать в функцию двумерный массив указателей на класс? - C++
у меня есть std::vector&lt;Monster*&gt; monsters; Rect *pole; int pacmen_distance; Monster и Rect два...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Russian_Dragon
10 / 11 / 0
Регистрация: 18.02.2012
Сообщений: 140
26.02.2012, 21:07     Как правильно передать в функцию указатель на двумерный массив? #2
Не мучайся и используй указатели.
А там всё просто:
void fun(int** a){...}

void main(){
int** a;
fun(a);
}
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
26.02.2012, 21:09     Как правильно передать в функцию указатель на двумерный массив? #3
Цитата Сообщение от Russian_Dragon Посмотреть сообщение
void fun(int** a){...}
void main(){
int** a;
fun(a);
}
Это если динамический массив, а ТС хочет
Цитата Сообщение от kravam Посмотреть сообщение
A [4][4]
Тогда:
C++
1
2
3
void func(int A[][4]){}
//или
void func (int (*A)[4]) {}
MrCold
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
26.02.2012, 21:17     Как правильно передать в функцию указатель на двумерный массив? #4
Можно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void Set(int arr[], int f_ind, int s_ind){
 
        for(int i = 0; i < f_ind; i++ ){
 
                for(int j = 0; j < s_ind; j++ ){
 
                arr[i * s_ind + j] = rand() % 50;   // ЗАПОЛНЯЕМ СЛУЧАЙНЫМИ ЧИСЛАМИ 
 
                printf(" %d ",arr[i * s_ind + j] );   //   ВЫВОД
                }}}
 
int main()
{
        srand (time(NULL));
 
        int farr[M][N];
 
        Set(*farr, M, N); //
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.02.2012, 23:39     Как правильно передать в функцию указатель на двумерный массив? #5
kravam,
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
26
27
28
29
30
31
32
33
34
#include <iostream>
 
template<typename T, size_t M, size_t N>
void print_matrix(T (&matrix)[M][N])
{
    for (size_t i = 0; i < M; ++i)
    {
        for (size_t j = 0; j < N; ++j)
            std::cout << matrix[i][j] << "  ";
        
        std::cout << std::endl;
    }
}
 
int main()
{
    int a[2][2] =
    {
        {1, 2},
        {3, 4}
    };
    
    double b[3][4] = 
    {
        {0.1, 0.2, 0.3, 0.4},
        {1.5, 1.6, 1.7, 1.8},
        {2.1, 2.2, 2.3, 2.4}
    };
    
    print_matrix(a);
    print_matrix(b);
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2012, 23:52     Как правильно передать в функцию указатель на двумерный массив?
Еще ссылки по теме:

Как передать двумерный массив в функцию, которая вызывается в main? - C++
ребят прошу помогите, проблема в том, что у меня есть функция принимающая в параметрах двумерный массив, но когда я вызываю ее в main ни...

Как правильно передать массив объектов пользовательского типа в функцию? - C++
Доброго всем, пишу впервые пишу огромную программу - игру и столкнулся с проблемой, которую так сам и не могу решить. Нужно передать массив...

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив) - C++
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая как параметр получает указатель на...

Нюансы работы с массивами: как правильно передать массив в функцию в качестве аргумента? - C++
Здравствуйте!!!Начал недавно изучать с++ и с по книге!!!там есть пример и возник небольшой вопрос к нему!Скину весь код, чтобы было...

Как правильно передать динамический массив в функцию, увеличивающую его размер, чтобы изменения сохранились - C++
Извиняюсь за совсем нубский вопрос, похожее не нашел. Простая учебная задача - написать функцию, которая добавляет элемент в динамический...

Не знаю как правильно передать указатель - C++
В общем для начала приложу код ( не пугайтесь , что придется много читать , из этого кода изучить нужно лишь 2 функции и данные структуры )...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
27.02.2012, 23:52  [ТС]     Как правильно передать в функцию указатель на двумерный массив? #6
Сложности такие сложности... Помню раньше на g++ 3.4.2 писал
C++
1
2
int**a;
a[2][3];
И не надо было думать о размерностях...
Yandex
Объявления
27.02.2012, 23:52     Как правильно передать в функцию указатель на двумерный массив?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru