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

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

Войти
Регистрация
Восстановить пароль
 
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
#1

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

14.11.2011, 02:08. Просмотров 871. Ответов 3
Метки нет (Все метки)

Здравствуйте!

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

Написал функцию выделение памяти под двумерный динамический массив, которая возвращает масив размером 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;
}

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

Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2011, 02:08     Вызов функции динамического выделение памяти
Посмотрите здесь:

Выделение динамической памяти в функции C++
C++ Выделение памяти под укзатель переданный функции
C++ Указатели и функции. Динамическое выделение памяти
C++ Выделение динамической памяти указателю в локальной функции
Выделение памяти для двухмерного массива внутри функции C++
Динамическое выделение памяти для структуры в функции C++
C++ Выделение памяти оператором new в функции и возращение ею этого значения
Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main? C++
Выделение памяти в процессе выполнения функции C++
Выделение динамической памяти размером полученным из функции C++
Динамическое выделение памяти внутри функции (что вернуть из функции, если не удалось выделить память?) C++
Выделение памяти в функции C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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     Вызов функции динамического выделение памяти
Ответ Создать тему
Опции темы

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