Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
SanchezPluz
49 / 49 / 8
Регистрация: 31.10.2012
Сообщений: 481
1

Добавление динамической памяти к уже созданному массиву чисел

08.01.2014, 18:15. Просмотров 472. Ответов 5
Метки нет (Все метки)

Доброго времени суток, уважаемые!

Т.к. в чистом Си никогда не работал, пришел за помощью к вам.
У меня есть массив чисел, для которого выделили память в первый раз для 6 цифр. Но нужно добавить еще 7 чисел в этот же массив и в этот же указатель. При этом нужно сохранить первые 6 цифр, которые были до добавления.

Вот такой код, не уверен, что он верный:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    int *a;
 
    for (int i = 0; i < 5; i++)
    {
        scanf("%d", &a[i]);
    }
}

 Комментарий модератора 
Будьте внимательней, данный раздел форума посвящён языку C, а не C++
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2014, 18:15
Ответы с готовыми решениями:

В динамической памяти выделить место для сохранения двух массивов действительных чисел
В динамической памяти выделить место для сохранения двух массивов действительных числл заданной...

Создать класс-шаблон, откладывающий выделение динамической памяти до первого реального обращения к массиву
нужно создать класс-шаблон, который откладывает выделение динамической памяти до первого реального...

Как добавить новой динамической памяти к уже выделенной
Добрый вечер! У меня есть следующий вопрос: Допустим я выделил для некоторой строки память char...

Добавление памяти динамическому массиву
пытаюсь доканать динамические массивы (vector не предлагать, с ним все ок). суть задачи. есть...

добавление чисел к массиву
Ребят помогите с задачкой, прошу: Дан одномерный массив числовых значений, насчитывающий N...

5
kazak
3061 / 2382 / 255
Регистрация: 11.03.2009
Сообщений: 5,440
Завершенные тесты: 1
08.01.2014, 18:20 2
Для начала, у Вас нет выделения памяти.
0
SanchezPluz
49 / 49 / 8
Регистрация: 31.10.2012
Сообщений: 481
08.01.2014, 18:21  [ТС] 3
Цитата Сообщение от kazak Посмотреть сообщение
Для начала, у Вас нет выделения памяти
Говорю же, в Си вообще не очень.
Где не так, подскажите, пожалуйста.
0
kazak
3061 / 2382 / 255
Регистрация: 11.03.2009
Сообщений: 5,440
Завершенные тесты: 1
08.01.2014, 18:42 4
Функции выделения памяти находятся в stdlib.h
C
1
2
3
4
5
void* malloc (size_t size);/*выделение блока памяти размером size байт;*/
void* calloc (size_t num, size_t size);/*выделение памяти под num элементов размером size, 
элементы инициализируются нулями;*/
void* realloc (void* ptr, size_t size);/*изменение размера массива ptr*/
void free (void* ptr);/*освобождение выделенной памяти*/
Пример выделения памяти
C
1
2
3
4
5
6
7
int *a;
a = (int*)malloc(6*sizeof(int));/*выделили память под 6 элементов int, приведение типов обязательно*/
/*заполнили массив, сделали необходимые манипуляции*/
a = (int*)realloc(a, 13*sizeof(int));/*увеличили размер массива до 13 элементов, пример упрощенный 
без проверки результата, желательно использовать временный указатель*/
/*сделали необходимые манипуляции с новым массивом*/
free(a);/*освободили выделенную память после работы*/
Подробности можно посмотреть тут http://www.cplusplus.com/reference/cstdlib/
1
RHB
33 / 33 / 17
Регистрация: 27.01.2013
Сообщений: 200
08.01.2014, 18:48 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 <iostream>
#include <stdlib.h>
 
using namespace std;
 
int main()
{
    int* a = (int*)(malloc(sizeof(int)*6));
 
    for (int i = 0; i < 6; i++)
    {
        cin >> a[i];
    }
    for (int i = 0; i < 6; i++)
    {
        cout << a[i] << " ";
    }
    
    cout<<endl<<"Videlim dop. pamiat'"<<endl;
    a = (int*) realloc (a, (6+7)* sizeof(int));
    for (int i = 6; i < (6+7); i++)
    {
        cin >> a[i];
    }
    cout<<endl;
    for (int i = 0; i < (6+7); i++)
    {
        cout << a[i] << " ";
    }
    
    free(a);
    system("PAUSE");
    return 0;
}
 Комментарий модератора 
Будьте внимательней, данный раздел форума посвящён языку C, а не C++
0
SanchezPluz
49 / 49 / 8
Регистрация: 31.10.2012
Сообщений: 481
08.01.2014, 22:22  [ТС] 6
kazak, спасибо. Решил свою проблему функцией realloc().
0
08.01.2014, 22:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2014, 22:22

Как искать по массиву, созданному от struct ?
Добрый день. Я пока очень мало занимался C#... У меня такая задачка : перенести значения...

В динамической памяти создать двусвязный список из четных чисел
1) в динамической памяти создать односвязный список типа &quot;очередь&quot; из случайных символов...

Создать в динамической памяти двумерный массив целых чисел.
Народ выручайте, по уши в долгах. Решить задачу на C++ Условие: Создать в динамической памяти...


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

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

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