П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций





НазваниеП. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций
страница14/18
Дата публикации20.09.2013
Размер0.64 Mb.
ТипКонспект
100-bal.ru > Информатика > Конспект
1   ...   10   11   12   13   14   15   16   17   18

Указатели


Во всех рассмотренных нами программах использовалось статическое распределение памяти: переменные объявлялись так, что компилятор резервировал для каждой из них некоторое количество памяти (в соответствии с типом данных) еще на этапе компиляции. Язык C++ включает в себя мощные средства для работы с оперативной памятью: динамическое выделение и освобождение памяти, доступ к отдельным ячейкам памяти по их адресам, механизм указателей, который позволяет работать с динамическими структурами данных, размер которых не известен на этапе компиляции и может меняться во время выполнения программы.

Указатель представляет собой адрес переменной в оперативной памяти. Переменная указательного типа (переменная-указатель или просто указатель) – это переменная, размер которой достаточен для хранения адреса оперативной памяти.

Объявление указателей


Переменные-указатели объявляются с помощью символа *, который добавляется после названия обычного типа данных (или перед именем переменной-указателя). Например, описание:

int* a;

объявляет переменную-указатель a, которая может принимать значение адреса переменной целого типа int. Здесь int является базовым типом для переменной-указателя a.

Несколько указателей одного типа можно объявить так:

int *a, *b, *c;

Однако если в программе используется много указателей одного типа, целесообразно определить новый тип:

typedef int* ref_int;

ref_int a, b, c;

Здесь объявлен указательный тип ref_int и три переменные a, b, c этого типа.

Операции над указателями


С указателями можно использовать 4 арифметические операции: +, -, ++ и --, т.е. 2 бинарные (сложения и вычитания) и 2 унарные (инкремент и декремент), а также операции отношения: ==, < и >. При этом важно иметь в виду, что арифметические операции над указателями выполняются по особым правилам.

Поскольку значение указателя представляет собой адрес переменной некоторого типа, при выполнении арифметических операций происходит изменение (смещение) адреса на величину кратную длине соответствующего базового типа. Так, если переменная-указатель описана как short *a, и в процессе выполнения программы переменная a приняла значение 1600 (адрес памяти), то после выполнения инкремента a++ она примет значение 1602, т.е. адрес увеличится на величину, равную длине памяти, занимаемой базовым типом short. Иначе говоря, произойдет смещение указателя на адрес, расположенный непосредственно за значением переменной, на которую указывает a. К переменной-указателю можно прибавлять (или вычитать) целое число. При этом происходит смещение указателя на соответствующее базовому типу число адресов памяти.

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

Для получения значения переменной по ее указателю используется унарная операция разыменования (разадресации) *. Выражение *<переменная-указатель> представляет собой переменную (значение переменной), адрес которой равен значению переменной-указателя. По существу операция разыменования является обратной рассмотренной ранее операции взятия адреса &. Таким образом, операция * означает «получить значение переменной, расположенной по этому адресу», а операция & – «получить адрес этой переменной». Отсюда, например, следует, что выражение *&*&*&a принимает значение переменной a. Операция разыменования позволяет использовать указатели в выражениях базового для указателя типа и в операторе присваивания.

Пример:

include

void main()

{

int a=5, b=8;

int *m, *n;

m=&a; n=&b;

*m+=5;

*n=*m+b;

cout <<”\na= <

}

В результате выполнения этой программы на экран будет выведено:

a=10 b=18.

Можно считать, что в программе для переменной a использовалось два имени: a и *m, а для переменной b: b и *n.

Следует заметить, что операции * и & имеют более высокий приоритет, чем любая из арифметических операций, кроме унарного минуса, приоритет которой такой же, как у этих двух операций.
1   ...   10   11   12   13   14   15   16   17   18

Похожие:

П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций iconПрограмма по формированию навыков безопасного поведения на дорогах...
Мама купила 6 шаров красного и голубого цвета. Красных было больше, чем голубых. Сколько шаров каждого цвета могло быть? (2варианта...
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций iconС. П. Филин Концепции современного естествознания: конспект лекций
Конспект лекций соответствует требованиям Государственного образовательного стандарта высшего профессионального образования РФ и...
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций iconКонспект лекций раскрывает содержание и структуру учебной дисциплины...
Налоговое право : конспект лекций / сост доцент Р. В. Бобринев; Кузбасский институт экономики и права. – Кемерово, 2011 – 144 с
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций icon«программирование»
Рабочая программа дисциплины «Программирование» /сост. Хатаева Р. С.– Грозный: чгпи, 2011г
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций iconКонспект лекций по философии Часть 1 Античная философия Новосибирск...
Савостьянов А. Н. Конспект лекций по философии / Новосиб гос ун-т. Новосибирск, 2007. Ч. Античная философия. 68 с
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций iconКонспект лекций по курсу хозяйственного права тема Понятие хозяйственного права
Кафедра Истории, социологии и права Назаров Андрей Александрович конспект лекций по курсу хозяйственного права
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций iconКонспект лекций по высшей математике. В 2 частях. Часть М.: Айрис-пресс,...
Баранова Е. С., Васильева Н. В., Федотов В. Л. Практическое пособие по высшей математике. Типовые расчеты. Учебное пособие. — Спб:...
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций iconОпорный конспект лекций Основные понятия, термины, законы, схемы...
Л. Н. Блинов, Н. Н. Ролле. Экология: опорный конспект лекций. Основные понятия, термины, законы, схемы. Спб.: Изд. Спбгпу. 2005....
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций iconН. Д. Серова структурное подразделение детский сад Конспект
Универсальные учебные действия: 1 формирование основ социально ценных личностных и нравственных качеств: уважение и вежливое отношение...
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций icon12 Достижения компьютерной техники 15 Программирование
Программирование 3
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций iconКонспект урока л. Н. Андреев «Кусака». Сострадание и бессердечие...
«моу шалакушская средняя школа» структурное подразделение «Шожемская основная школа»
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций iconКонспект лекций Владимира Климентьева по истории философии, отредактированный...
Рекомендовано Министерством общего и профессионального образования Российской федерации в качестве учебника для студентов высших...
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций iconТеория организации Конспект лекций для студентов специальности «Менеджмент организации»
Макарова н. Н. Теория организации. Конспект лекций с практическими заданиями для студентов специальности "Менеджмент организации....
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций iconЕленевский А. Г., Соловьева М. П., Тихомиров В. Н. Ботаника высших или наземных растений
Он является обязательным для студентов 2 курса очной и заочной форм обучения на биолого-химическом факультете и рассчитан на очном...
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций iconФгбоу впо «агту» Обособленное структурное подразделение «Волго-Каспийский...
Полное наименование: Обособленное структурное подразделение «Волго-Каспийский морской рыбопромышленный колледж» федерального государственного...
П. А. Соловьева в. Г. Шаров структурное программирование на с++ Конспект лекций iconПисьменный Д. Т. Конспект лекций по теории вероятностей, математической...
Письменный Д. Т. Конспект лекций по теории вероятностей, математической статистике и случайным процессам. 3-е изд. М.: Айрис-пресс,...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск