Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Rexer
165 / 164 / 46
Регистрация: 10.10.2010
Сообщений: 725
1

Динамическое выделение памяти

22.05.2011, 03:33. Просмотров 695. Ответов 2
Метки нет (Все метки)

Всем привет!
Решил вот разобраться с выделением памяти.В общем выделяем память для двух матриц размера n на n,далее заполняем их и выводим на экран,все делаем через функции.Не получилось.
Вот мой код.
Замечаниям,критике и советам буду только рад!
Вызываем matrix_create,туда передаем размер матрицы и возвращаем указатель на указатель элемента матрицы первого,далее в main-е передаем это функции заполнения матрицы matrix_enter,туда передаем указатель на указатель и размер,заполняем матрицу и возвращаем на нее указатель,его передаем в matrix_printf и выводим на печать.
Но программа не компилится.Понимаю,что делаю что-то не так,но что не так уже не понимаю.ПРошу помочь в понимании.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include<stdio.h>
#include<malloc.h>
 
int ** matrix_create(int ,int );
int matrix_delete(int **,int );
int ** matrix_enter(int **,int );
 
int main(void)
{
    int n;
    int **res1;
    int **res2;
    printf("Enter the size of matrix\n");
    printf(" - > ");scanf("%d",&n);
 
    **res1 = matrix_create(n,n);
    **res2 = matrix_create(n,n);
 
    **res1 = matrix_enter(**res1,n);
    **res2 = matrix_enter(**res2,n);
 
    matrix_print(**res1,n);
 
    matrix_delete(**res1,n);
    matrix_delete(**res2,n);
}
int **matrix_create(int n,int m)
{
    int **res = (int **)malloc(n*sizeof(int*));
        if(res)
        {
            int i;
                for(i = 0;i < n;i++)
                  res[i] = (int*)malloc(n*sizeof(int));
                    if(!res[i])
                    {
                        for(i--;i >= 0;i--)
                        free(res[i]);
                        return 0;
                    }
        } else  {
                   return 0;
                }
                 return **res;
}
int matrix_delete(int **data,int n)
{
    if(data)
    {
        int i;
        for(i = 0;i < n;i++)
        {
            if(data[i])
            free(data[i]);
        }
        free(data);
    }
    return 0;
}
int **matrix_enter(int **res,int n)
{
    int i,j;
    printf("\n----------------------\nEnter elements\n-> ");
    for(i = 0;i < n;i++)
    for(j = 0;j < n;j++)
    scanf("%d",&res[i][j]);
 
    return **res;
}
int matrix_print(int **data,int n)
{
    int i,j;
    for(i = 0;i < n;i++)
    {
        printf("\n");
        for(j = 0;j < n;j++)
        printf("%d ",data[i][j]);
    }
    return 0;
}
Всем заранее спасибо за советы и ответы!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2011, 03:33
Ответы с готовыми решениями:

Динамическое выделение памяти
Приветствую. Имеется код: #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; typedef struct{ int...

Динамическое выделение памяти
Здравствуйте! Хочу часть кода,где динамически выделяется память под массив: double *darr; ...

Динамическое выделение памяти
задали задание по Си, сделать через динамическое выделение памяти. эту тему пропустил. читал...

Динамическое выделение памяти
Необходимо выделить память с помощью функции melloc под 5 символов char. При вводе пользователем...

Динамическое выделение памяти
int *a = (int*)malloc(n * sizeof(int)); int *a // это тип указателя (int* ) // зачем вот это...

2
gooseim
Эксперт С++
511 / 415 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
22.05.2011, 10:35 2
Тут ошибка в каждой строке. Почитайте про указатели и выделение памяти, прежде чем программу писать.
Например:
int **res1;
**res1 = matrix_create(n,n);
Зачем разыменовывать res1, если функция возвращает указатель на указатель?
1
Rexer
165 / 164 / 46
Регистрация: 10.10.2010
Сообщений: 725
22.05.2011, 11:01  [ТС] 3
Благодарю вас.
Ушел учить матчасть.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2011, 11:01

Динамическое выделение памяти
Прошу помощи опытных программистов, изначально размеренность динамического массива равна 2 и если...

Динамическое выделение памяти в Си
Пожалуйста, расскажите или покажите на примере, как выделить динамическую память для ФУНКЦИИ. т.е....

Динамическое выделение памяти
Пользователь вводит число. Программа динамически выделяет массив типа char размера n, c помощью...


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

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

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