Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2011, 19:58   #1
parazzzitka93
 
Регистрация: 02.04.2011
Сообщений: 4
Вопрос инициализация массива

подскажите пожалуйста, как можно инициализировать массив, если количество элементов мы узнаем позже? заранее спасибо!
parazzzitka93 вне форума Ответить с цитированием
Старый 02.04.2011, 20:02   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

1. узнать кол-во элементов заранее
2. использовать realloc
3. использовать связнный список
4. использовать std::vector
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 02.04.2011, 20:04   #3
parazzzitka93
 
Регистрация: 02.04.2011
Сообщений: 4
По умолчанию

а вы не могли бы уточнить про realloc и vector?
parazzzitka93 вне форума Ответить с цитированием
Старый 02.04.2011, 20:09   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

а что тут уточнять? realloc - наравне с маллоком, одна из основных функций libc. vector - один из основных контейнеров stl. ключевое слово - основной)
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 02.04.2011, 20:18   #5
parazzzitka93
 
Регистрация: 02.04.2011
Сообщений: 4
По умолчанию

я новичок) а можете написать как использовать вектор?
parazzzitka93 вне форума Ответить с цитированием
Старый 02.04.2011, 20:21   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
#include <vector>
...

std::vector<int> v;

v.push_back(1);
v.push_back(5);
v.push_back(10);

for (std::vector<int>::const_iterator It = v.begin(); It != v.end(); ++It)
    std::cout << *It << std::endl;
ну тк книжки читать же надо, раз новичек
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 02.04.2011, 20:38   #7
Merovingian
Пользователь
 
Регистрация: 25.06.2010
Сообщений: 30
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
1. узнать кол-во элементов заранее
2. использовать realloc
Не realloc, а malloc. Выделяем память мы функцией malloc, а перераспределяем realloc'ом

Код:
int n;
int *array; // заводим указатель типа int
printf("Введите полличество элементов массива ");
scanf("%d",&n);
array = (int*)malloc(n*sizeof(int)) // создаем массив n элементов типа int

Последний раз редактировалось Merovingian; 02.04.2011 в 20:46.
Merovingian вне форума Ответить с цитированием
Старый 02.04.2011, 20:42   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

имелось в виду что ТС знает как выделить начальную память, и лишь подсказали функцию перераспределения.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.04.2011, 20:43   #9
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Merovingian
ему и надо будет перераспределить. он же не знает, сколько элементов будет в итоге. выделяет маллоком например 100, если перевалило - реаллок
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 02.04.2011, 20:51   #10
Merovingian
Пользователь
 
Регистрация: 25.06.2010
Сообщений: 30
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
ему и надо будет...
Всё таки ей))

Тогда нужно выделить память под первый маллоком, а затем реаллоком выделять под остальные в процессе ввода.
Merovingian вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си - Выделение кучи -> инициализация указателя -> запись массива Renat060888 Общие вопросы C/C++ 3 22.11.2010 19:31
VS 2008 C# - Инициализация массива обьектов kasper298 Помощь студентам 0 17.11.2009 23:40
[C++] Инициализация массива структур отдельно от объявления MariyaL Помощь студентам 0 30.09.2009 12:27
инициализация массива Arcueid1691 Паскаль, Turbo Pascal, PascalABC.NET 2 01.06.2009 02:36
Инициализация массива указателей. Непонятно !!! Adamant Общие вопросы C/C++ 2 05.11.2007 16:22