русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-07-09; просмотров: 737; Нарушение авторских прав


 

Язык С++ имеет два оператора, которые выполняют работу по выделению и освобождению памяти :

· Оператор new выделяет необходимую память из «кучи».

Формат оператора : Переменная-указатель = new тип_переменной;

· Оператор deleteосвобождает ранее выделенную динамическую память (возвращает ее в «кучу»).

Формат оператора : delete переменная-указатель;

 

Язык С++ позволяет инициализировать динамическую память в момент её выделения из «кучи», для этого начальное значение, которое нужно присвоить при инициализации заключается в круглые скобки.

Формат оператора :

Переменная-указатель = new тип_переменной (?);

Пример1. Статическое распределение памяти под переменные.

Память под переменные x,y и z выделяется при трансляции, к ним можно обращаться по именам, так как адреса переменных фиксированы.

 

#include <iostream>

#define n 100

using namespace std;

void main()

{ int x,y;

double z;

x=n;

do

{

cout<<"y=";

cin>>y;

}

while(!y);

z=double(x)/y;

cout<<"\nz="<<z<<'\n';

}

 

В следующем примере память, необходимую для переменных x и y, выделим динамически, то есть в момент работы программы.

 

Пример2. Под две переменные типа int память выделяется динамически (числитель и знаменатель дроби. Результат вычисления записывается в статическую переменную z.

 

#include <iostream>

using namespace std;

void main()

{ int *p_x,*p_y; // определить указатели p_x и p_y

double z;

p_x=new int() ; /* выделить динамическую память под переменную типа int и записать её адрес в указатель p_x*/

p_y=new int(); /* выделить дин. память (адрес в указателе p_y)*/

cout<<"x=";

cin>>*p_x; // ввести данные с клавиатуры в динамическую переменную



do// ввести ненулевые данные с кл-ры в динамическую переменную

{

cout<<"y=";

cin>>*p_y;

}

while(!*p_y);

 

z=double(*p_x)/(*p_y);

cout<<"\nz="<<z<<'\n';

delete p_x; // освободить динамическую память

delete p_y;

system ("pause"); // задержка экрана

}

Память под переменную z выделяется при трансляции, поэтому к ней можно обращаться по имени. Память под переменные для числителя и знаменателя дроби, выделяется динамически и, поэтому эти данные не имеют имён , так как их адреса в момент трансляции неизвестны. К этим переменным можно обращаться только через указатели, в нашем примере – это указатели p_x и p_y.

 



<== предыдущая лекция | следующая лекция ==>
Распределение памяти компьютера. | Динамическое выделение памяти для массивов.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 6.588 сек.