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

Вызов функции динамического выделение памяти - C++

Восстановить пароль Регистрация
 
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
14.11.2011, 02:08     Вызов функции динамического выделение памяти #1
Здравствуйте!

Нужна помощь!

Написал функцию выделение памяти под двумерный динамический массив, которая возвращает масив размером n на m!

C++
1
2
3
4
5
6
7
8
9
int Matrix(int **matr, int n, int m)
{
    
    int **mass = new int *[n];
    for (int i = 0; i < n; ++i) 
        mass[i] = new int [m];  
 
    return mass[n][m];
}
С этим как то проблем нету!

Проблема состоит в том, что не получается вызвать эту функцию

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
int main()
{
    setlocale(LC_CTYPE,"Russian");
    int n, m;
    
    cin >> n >> m;
 
    //int matr[n][m] = Matrix(matr, n, m); не подходит 
           //ИЛИ
           //Matrix(matr, n, m); то понятно не объявленный matr
 
    
    ifstream inarray;
    inarray.open("matrix.txt"); // открытие файла для ввода
 
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < m; ++j) 
        {
            inarray >> matr[i][j];
            cout << matr[i][j] << "\t";
        }                           
    cout << endl;
    }                               
    
    system("pause >> null");
    return 0;
}

Подскажите каким образом можно вызвать эту функцию!

Спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
g-man
8 / 8 / 1
Регистрация: 02.04.2010
Сообщений: 25
14.11.2011, 02:14     Вызов функции динамического выделение памяти #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void Matrix(int **matr, int n, int m)
{
        
        matr = new int *[n];
        for (int i = 0; i < n; ++i) 
                matr[i] = new int [m];  
}
 
int main( void )
{
          int **a = NULL; Matrix( a, 10, 10 );
          return 0;
}
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
14.11.2011, 02:23     Вызов функции динамического выделение памяти #3
g-man
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Matrix(int **matr, int n, int m)
{
        
        matr = new int *[n];
        for (int i = 0; i < n; ++i) 
                matr[i] = new int [m];  
}
 
int main( void )
{
          int **a = 0; 
          Matrix( a, 10, 10 );
          a[5][5] = 1; // wtf?
          return 0;
}
Упс!

Добавлено через 2 минуты
Правильный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int** Matrix(int n, int m)
{
        
        int **matr = new int *[n];
        for (int i = 0; i < n; ++i) 
                matr[i] = new int [m];  
        return matr;
}
 
int main( void )
{
          int **a = 0; 
          a = Matrix( 10, 10 );
          a[5][5] = 1;
          return 0;
}
Добавлено через 45 секунд
Либо исправленный код g-man
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Matrix(int **&matr, int n, int m)
{
        
        matr = new int *[n];
        for (int i = 0; i < n; ++i) 
                matr[i] = new int [m];  
}
 
int main( void )
{
          int **a = 0; 
          Matrix( a, 10, 10 );
          a[5][5] = 1;
          return 0;
}
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
14.11.2011, 02:30  [ТС]     Вызов функции динамического выделение памяти #4
Спасибо! все работает!) Выручили!
Yandex
Объявления
14.11.2011, 02:30     Вызов функции динамического выделение памяти
Ответ Создать тему
Опции темы

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