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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2011, 22:05   #1
dimondru
Новичок
Джуниор
 
Регистрация: 30.05.2011
Сообщений: 1
По умолчанию масивы

здравствуйте, я учусь на курсе, изучаю с++
можете кто ни будь пояснить метод формирования динамического массива?
я только вот недавно начал понимать саму логику программирования.
dimondru вне форума Ответить с цитированием
Старый 30.05.2011, 23:10   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

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

В общем, вот вам простенький пример работы с динамическим массивом:
Код:
void f()
{
int sz;
std::cout << "Enter array size: ";
std::cin >> sz;
int* arr = new int[sz];
for (int i = 0; i < sz; i++)
 arr[i] = i * i;
for (int i = 0; i < sz / 2; i++)
 std::cout << "arr[" << i << "] = " << arr[i] << std::endl;
delete[] arr;
}
Запросили у пользователя размер массива, выделили память, заполнили элементы массива соответствующими значениями, вывели на экран первую половину массива, освободили выделенную память.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
масивы misha25525 Помощь студентам 0 11.04.2010 11:46
Масивы ewans Общие вопросы C/C++ 3 28.12.2009 15:29
Масивы в С++ MoonDancer Помощь студентам 2 02.12.2009 11:41
масивы с++ Smile.id Помощь студентам 1 25.11.2009 15:09
С++ масивы Миха Шебалкин Помощь студентам 0 03.06.2009 22:33