Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамический массив 
:(
    Опции темы
ekha
Дата 24.11.2004, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.11.2004

Репутация: нет
Всего: нет




Прошу прошения.
Скажите пожалуйста, как используется динамичекий массив? smile
PM MAIL   Вверх
dargaard
Дата 24.11.2004, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 450
Регистрация: 7.5.2004

Репутация: 4
Всего: 25



В динамическом массиве память не выделена во время компиляции, а выделяется во время исполнения програмы.

Например:
(Статический массив)
int main() {
int massiv[10];
}
будет выделена память под массив из 10 чисел.

(Динамический массив)
int main() {
int *massiv; //указатель на будуший массив

//какие нибудь действия чтоб установить сколько надо выделить
// например мы как то выяснили что размер массива N = 10
// В С
massiv = malloc(sizeof(int) * N);
// В С++
massiv = new int[10];

//Далее если массив больше не нужен, память можно удалить
// В С
free(massiv);

// В С++
delete [] massiv;
}

Следовательно динамический массив используется, когда
а) не известно количество элементов заранее
б) массив нужен только на короткое время

Это сообщение отредактировал(а) dargaard - 24.11.2004, 17:19


--------------------
Ты должна сделать добро из зла 
потому что его больше не из чего
сделать. Р.П.Уоррен
PM MAIL WWW ICQ   Вверх
val
Дата 24.11.2004, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: нет
Всего: 7



Используется обычно, когда заранее не знаешь длины требуемого массива.

Код

int main() {
 int* a;
 cin >> n;
 a = new int[n]; // Выделили память для массива длиной n.
 // Чего-то с ним делаем.
 delete [] a; // Очищаем память, выделенныю под этот массив.
}



--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
Alastis
Дата 26.11.2004, 06:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 15.11.2004
Где: Казахстан, Астана

Репутация: 4
Всего: 10



а еще почитай про vector из STL, очень удобная штука.


--------------------
Прости, что я говорю, когда ты меня перебиваешь.
PM MAIL WWW ICQ   Вверх
[ss]3L33T@
Дата 27.11.2004, 06:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 14.10.2003
Где: Казармы

Репутация: -1
Всего: 1



ekha
Код

#include <stdio.h>
void main()
{
   float* mass=new float[5];//Заводим массив из 5 элементов.
   delete [] mass;//Удаление массива: очистка памяти бишь.
   mass=new float[20];//Отводим память для массива(т.е. создаём массив)
   mass[0]=2.4;//Устанавливаем значение элемента массива.
}

Ещё посмотри функцию realloc(). Она необходима для расширения массива без потери данных. Т.е., в данном примере я сначала завёл массив из 5 элементов, а потом другой - из 20 элементов, чтобы завести второй, мне нужно было осовободить память из-под первого, при этом все значение первого массива, есесно, были утеряны, а функция realloc() просто расширяет границы массива

--------------------
Понастоящему добрый человек всегда простит и забудет вам ваше зло, но он никогда не простит и не забудет вашего добра[ss]3L33T@
PM MAIL WWW ICQ   Вверх
!Жека!
Дата 27.11.2004, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 26.11.2004

Репутация: нет
Всего: нет



Сначало необходимо выделить память под массив, потом идет работа с массивом как с обыкновенным. По окончании необходимо осободить выделенную память.

Пример.

int *arr = new int[n]; // выделяем память под n элементов, n - любое, может быть не константой

for (int i = 0; i < n; ++i)
arr[i] = i+10; // работаем с массивом

delete [] arr; // освобождаем память, обрати внимание на скобки [] если их забыть то ошибки не будет, но память полностью не освободится

PM MAIL   Вверх
chipset
Дата 27.11.2004, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(3L33T @ 26.11.2004, )
Ещё посмотри функцию realloc().

АФАИК старо-сишные функции обычно не принято употреблять в С++.

Это сообщение отредактировал(а) chipset - 27.11.2004, 16:25


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Гость_ekha
Дата 29.11.2004, 08:39 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered












Сначала Всем спасибо за рекомендации.

Хочу подсчитать колличество цифры какой нибудь число.
помогите пожалуйста.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0801 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.