Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы.doc
Скачиваний:
31
Добавлен:
04.03.2016
Размер:
317.44 Кб
Скачать

Література

  1. Джесс Либерти. Освой самостоятельно С++. 3 и-е. М.: Вильямс. – 2000.

  2. Г. Шилдт. Полный справочник по С++. 4 и-е. – М.: Вильямс. – 2003.

  3. Т.А. Павловская. С/С++. Программирование на языке высокого уровня. ПИТЕР-2002

  4. С.В. Глушаков. Практикум по С++. ФОЛИО – 2006

  5. Х. Дейтел, П. Дейтел. Как программировать на С++.

  6. Ю.Л. Кетков. Введение в языки программирования C и C++ http://www.intuit.ru/department/pl/ccpp/

  7. А.Л. Фридман. Язык программирования C++ http://www.intuit.ru/department/pl/cpp/

Лабораторная работа 8

Тема: Указатели

Цель:

Теоретические сведения

См. лекция №8

Ход работы

  1. Что делают следующие объявления? a)int*pOne;b)intvTwo;c)int*pTree=&vTwo;

  2. Если у вас имеется переменная типа unsigned short int с именем yourAge, как объявить указатель, чтобы иметь к ней доступ.

  3. Присвойте значение 50 переменной yourAge из п.2.

  4. Напишите небольшую программу, в которой объявляются целое и указатель на целое. Присвойте адрес целого указателю. С помощью указателя установите значение целой переменной.

  5. Что неверно в следующем фрагменте кода? int *pInt; *pInt=9; cout << “The value at pInt: “ << *pInt;

  6. Что неверно в следующем фрагменте кода? int SomeVariable =5; int *pVar=&SomeVariable; pVar=9; cout << “SomeVariable: “ << *pVar;

  7. Напишите программу , в которой создаются два объекта типа Employee в свободной памяти; установите их возраст, число проработанных лет и зарплату; распечатайте их значение. (см. Тема 6).

  8. Создайте объект целого типа в стеке. Затем указатель на него. Измените и распечатайте значение этого объекта с помощью указателя .

  9. Создайте объект любого ранее разработанного класса (Cat, Worker,Pencil…) в стеке. Затем указатель на него. Измените и распечатайте значение этого объекта с помощью указателя.

  10. Создайте объект любого ранее разработанного класса (Cat, Worker,Pencil…) в свободной памяти. Измените и распечатайте значение этого объекта с помощью указателя.

  11. Напишите программу, создающую висящий указатель на объект любого ранее разработанного класса (Cat, Worker,Pencil…). Объясните как ее исправить.

  12. Напишите программу, создающую утечку памяти. Увеличьте скорость утечки памяти с помощью создания объектов любого ранее разработанного класса (Cat, Worker,Pencil…). Объясните как ее исправить.

  13. Преобразуйте ранее разработанный класс (Cat, Worker,Pencil…) в класс с динамическим выделением памяти.

Контрольные вопросы

  1. Что такое указатель?

  2. Как объявить указатель в программе?

  3. Как определить адрес переменной?

  4. Как адрес переменной занести в указатель?

  5. Что такое null-указатель?

  6. Как сформировать null-указатель?

  7. Почему указатели нужно инициализировать?

  8. Как называют неинициализированные указатели?

  9. Что такое операция косвенной адресации (разыменования)?

  10. В чем различие между переменной, значением, адресом и указателем?

  11. Для чего используются указатели?

  12. Как создать переменную в свободной памяти и присвоить ей значение?

  13. Как проверить, создалась ли переменная в свободной памяти?

  14. Какие действия необходимо выполнить при уничтожении динамической переменной?

  15. Зачем нужно объявлять что-либо в свободной памяти?

  16. Можно ли создавать объекты в свободной памяти?

  17. Как выполняется доступ к данным-членам таких объектов?

  18. Что такое утечка памяти? Как она происходит?

  19. Можно ли создавать объекты в свободной памяти?

  20. Как выполняется доступ к данным-членам таких объектов?

  21. Могут ли данные-члены быть указателями?

  22. Как пишется конструктор и деструктор подобных классов?

  23. Что такое указатель this.

  24. Как в программе появляются висящие указатели?

  25. Для чего и как вместе с указателями используется слово const.

  26. Для чего объект может объявляться константным?