Динамическое выделение памяти
Динамический массив от статического отличается в первую очередь тем, что на момент компиляции размер динамического массива не известен, в отличие от массивов статических, для которых размер должен быть известен уже при компиляции. Типичный пример необходимости создания динамического массива - когда размер массива определяется пользователем путем ввода числового значения с клавиатуры. Чтобы определить раз мер массива, необходимо сначала запустить программу и только после это го станет известно, сколько должно быть элементов в массиве. Разумеется, можно использовать в таких ситуациях статические массивы, предусмотрев в них достаточное количество элементов. Однако такой подход грешит не рациональным использованием системных ресурсов и не всегда приемлем. Динамические массивы реализуются посредством операторов динамического распределения памяти, В для выделения области памяти используется оператор new, а для освобождения выделенной ранее памяти используют оператор delete. В частности, оператор нем выделяет область памяти и возвращает в качестве значения указатель на первую ячейку вы деленной памяти. Причем указанные операторы используются для выделения памяти как для обычных переменных, так и для массивов.
Пример. Динамическое выделение памяти для переменных
Пример. Динамическое выделение памяти для массивов
Пример. Динамическое выделение памяти для переменных
#includeusing namespace std; int main(){ int *p; double *q; p=new int; q=new double(3.6); cout << "Enter int-number: "; cin >> *p; cout << "Address: " << p << endl; cout << "Value: " << *p << endl; cout << "Address: " << q << endl; cout << "Value: " << *q << endl; delete p; delete q; return 0; }
#includeusing namespace std; int main(){ int *p,n; cout << "Enter n = "; cin >> n; p=new int[n]; for(int i=0; i < n; i++){ p[i]=2*i+1; cout << p[i] << " "; } delete [] p; cout << endl; return 0; }