Предположим я создал массив таким способом:
double *ptd;
ptd=(double *) malloc(2 * sizeof (double));
ptd[0]=4;
ptd[1]=3;
Что мне теперь необходимо сделать, что бы массив ptd содержал 5 элементов, но при этом сохранить значение ptd[0], ptd[1]?
распределение памяти
Модератор: Модераторы разделов
-
krivakin
- Сообщения: 117
- ОС: Debian 4.0
Re: распределение памяти
А еще как с помощью malloc создать многомерный массив?
-
Shura
- Сообщения: 1537
- Статус: Оказывается и без KDE есть жизнь
- ОС: FreeBSD 8.0-RC2
Re: распределение памяти
1. Создаем новый массив, копируем туда значения из старого. Как вариант - пользовать realloc, только обязательно прочти документацию. Если можешь использовать С++, то пользуй std::vector, а про malloc забудь.
2.
2.
Код: Выделить всё
static int X=10,Y=10;
double **ptr;
*ptr=malloc(X*sizeof(double*));
for(int i=o;i<X;i++)
ptr[i]=malloc(Y*sizeof(douvle*));Rock'n'roll мертв © БГ
-
MedVed
- Сообщения: 112
Re: распределение памяти
Еще можно так:
#define ROWS 2
#define COLS 3
double *mass = (double *)malloc(ROWS*COLS*sizeof(double))
// А дальше, для доступа к элементу mass[row][col] (нумерация с 0)
*(mass+row*COLS+col-1) = bla-bla;
/* А вообще, если собираешься кодить на С (тем паче под никс),
очень полезно будет почитать соответсвующую класику.
В любой институтской библиотеке можно отрыть
старые книги примерно 90-х годов. (Ричи, С для СЭВМ и т.п.) */
#define ROWS 2
#define COLS 3
double *mass = (double *)malloc(ROWS*COLS*sizeof(double))
// А дальше, для доступа к элементу mass[row][col] (нумерация с 0)
*(mass+row*COLS+col-1) = bla-bla;
/* А вообще, если собираешься кодить на С (тем паче под никс),
очень полезно будет почитать соответсвующую класику.
В любой институтской библиотеке можно отрыть
старые книги примерно 90-х годов. (Ричи, С для СЭВМ и т.п.) */
МСВС 3.0/Linux Mandrake 8.0
-
TwisT
- Сообщения: 265
- ОС: Debian
Re: распределение памяти
А может лучше не массивами а список сделать, проще (по моему) менять размер.
Linux user #432536.
-
Zeus
- Сообщения: 694