Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/41: Рейтинг темы: голосов - 41, средняя оценка - 4.54
kravam
быдлокодер
1710 / 897 / 105
Регистрация: 04.06.2008
Сообщений: 5,549
1

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

26.02.2012, 20:51. Просмотров 7917. Ответов 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;
}
Адрес передаётся один и тот же, ЧЯДНТ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 20:51
Ответы с готовыми решениями:

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

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

Как передать двумерный массив в функцию?
например у меня есть двумерный массив 5 на 5.мне нужна функция в которой будет...

Как передать в функцию двумерный динамический массив?
#include &lt;iostream&gt; #include&lt;time.h&gt; #include&lt;cstdlib&gt; using namespace...

Как передать массив (двумерный/одномерный вектор) в функцию?
#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int n,m;//סענמך...

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

void main(){
int** a;
fun(a);
}
0
dimcoder
Полярный
467 / 440 / 157
Регистрация: 11.09.2011
Сообщений: 1,144
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]) {}
1
MrCold
861 / 759 / 174
Регистрация: 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); //
1
silent_1991
Эксперт С++
5011 / 3071 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 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;
}
2
kravam
быдлокодер
1710 / 897 / 105
Регистрация: 04.06.2008
Сообщений: 5,549
27.02.2012, 23:52  [ТС] 6
Сложности такие сложности... Помню раньше на g++ 3.4.2 писал
C++
1
2
int**a;
a[2][3];
И не надо было думать о размерностях...
0
27.02.2012, 23:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2012, 23:52

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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