русс | укр

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

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

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

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


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

Операция new


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


Использование операции new является одним из способов, как определить значение переменной указателя (другие способы смотри в §2). В простейшем случае синтаксис применения этой операции такой:

указатель=new имя_типа;

Например, пусть объявлена переменная-указатель float *p;. Тогда операция

p=new float;

выделяет и делает доступным свободный участок динамической памяти, размер которого соответствует типу данных, определяемому именем типа. В нашем примере резервируется память размером 4 байта для размещения одного вещественного числа. Кроме этого, в случае успешного выполнения операция new возвращает адрес начала выделенного участка. Значение этого адреса присваивается переменной- указателю (в примере переменной p). Но значение выделенной ячейки, которое в программе обозначается *p, после выполнения этой операции ещё не определено. Поэтому cout<<(*p) выведет случайное число. Для задания значения *p надо выполнить, например, ввод ( cin >> (*p);), или использовать другой способ ( присваивание, получение с помощью функции и т.п..). Напомним, что cin>>p; приводит к ошибке.

Если участок нужных размеров не может быть “найден”, то операция new возвращает нулевое (точнее, неопределённое) значение адреса, которое в программе обозначается константой NULL, которая записывается обязательно большими буквами. Тогда в программе можно записать

if (p==NULL) { cout<<”\nError”; exit(0);}

Как нулевое числовое значение, так для указателей значение NULL равносильно false в операциях сравнения. Поэтому последнее условие в if равносильно

if (!p) {cout<<”\nError”; exit(0);}

С помощью рассматриваемой операции new можно проинициализировать не только значение указателя, но и задать значение выделенной ячейки памяти. В таком случае операция применяется так:



указатель=new имя_типа(значение);

Например,

p=new float(4.1);

определяет как значение указателя p, так и значение *p. Это равносильно

p=new float; *p=4.1;

Заметим, что значение записывается в круглых, а не в квадратных скобках. Последние будем позже использовать для создания динамического массива. Но динамический массив так инициализировать нельзя! (см.глава 2).

Доступ к переменной, адрес которой находится в p, как и раньше, осуществляется с помощью той же операции “*” (разыменование). Поэтому

cout<<p<<” “ <<(*p);

выведет адрес в 16-й системе счисления и число 4.1.



<== предыдущая лекция | следующая лекция ==>
Передача параметров функций с помощью указателей. | Операция delete


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


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

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

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


 


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

 
 

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

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