- •Краткие теоретические сведения
- •1.1.1Логическая структура памяти программы
- •1.1.2 Указатели. Типизированные указатели.
- •1.1.4Состояния указателей
- •1.2 Примеры работы с указателями
- •1.2.1Два указателя содержат адрес одной и той же переменной
- •1.2.2Ситуация утечки памяти
- •1.3 Задания для самопроверки
- •1.4 Создание проекта
- •1.5 Проведение исследований по использованию типизированных указателей в программе
- •1.3 Содержание отчета
- •Контрольные вопросы и задания
1.3 Задания для самопроверки
В качестве заданий для усвоения материала выполните следующее (можно без программной реализации) (В качестве примера используйте рисунок 1.16()змебез программной реализацииматериала выполните следующее:
ождать память перед тем, как указатель получает адрес другого уча):
Задание 1 (выполнить письменно).
1. Разместите в динамической памяти две переменные типа float и занесите в одну из них значение корня квадратного от 2.18, а в другую – синус от значения, которое находится в первой переменной.
2. Разместите в динамической памяти две переменные типа структура, содержащую информацию о преподавателе: Фамилия, Кафедра, Должность, Зарплата. Одну переменную заполните следующей информацией: Иванов, ИКС, Доцент, 5000.
Затем скопируйте значение заполненной первой переменной во вторую и только поменяйте значение поля Фамилия на «Петров».
3. Разместите в динамической памяти переменную типа массив из трех целых чисел и заполните его первый элемент значением 5.
4. Разместите в динамической памяти массив из 10 структур, содержащих ту же информацию, что и записи в пункте 2 и заполните третий элемент этого массива информацией о вашем преподавателе.
Задание 2
Напишите программы, которые обеспечат следующее расположение данных в памяти:
1.
Статическая память
P1
NULL
|
Динамическая память
78
56
|
2.
Статическая память
P1
P2
P3
NULL
|
Динамическая память
78
|
3.
Статическая память
P1
P2
P3
|
Динамическая память
78
|
4.
Статическая память
P1
P3
|
Динамическая память
78
NULL
56
|
5.
Статическая память
P1
P3
|
Динамическая память
NULL
Зима
78
‘Д
’ |
1.4 Создание проекта
1.4.1 Цель создания проекта
Целью проекта является размещение трех переменных типа int, float, double в динамической памяти и вывод их значений на экран , а также анализ значений указателей на эти переменные до выделения памяти и после и проведения анализа этих исследований.
1.4.2 Создание интерфейса проекта
Интерфейс программы должен выглядеть так как показано на рисунке 1.22.
Исходные значения для размещения в динамической памяти: int, float, double: 12, 3.12, 4.789
Значения указателей до размещения переменных в памяти: P1 = … ; P2 = … ; P3= … ;
Значения указателей после размещения в памяти: P1 = … ; P2 = … ; P3= … ;
Значения динамических переменных: *P1 = … ; *P2 = … ; *P3= … ;
|
Рисунок 1.22 – Изображение интерфейса проекта
1.4.3 Создание функции размещения переменных в динамической памяти.
Создайте функцию, как показано на рисунке 1.23.
void varInDynamicMemory( ) { p1 * int; p2 * float; p3 * double;
i int; f float; d double;
cout<<” Исходные значения для размещения в динамической памяти:\n”; cout<<” int float double: “; cin>>i>>f>>d; cout”\n”;
int iP1=(int)p1; int iP2=(int)p2; int iP3=(int)p3;
cout<<”Значения указателей до размещения переменных в памяти:\n” cout<<”P1 =”<<iP1<<”\n”; cout<<”P2 =”<<iP2<<”\n”; cout<<”P3 =”<<iP3<<”\n”;
/*Запрашиваем память для переменных в динамической памяти*/ p1=new int; p2=new float; p3=new double;
/*Берем значения указателей после выделения памяти под динамические переменные*/
int iP1=(int)p1; int iP2=(int)p2; int iP3=(int)p3;
/*Заполняем значениями динамические переменные*/
*p1 = i; *p2 = f; *p3 = d;
cout<<”Значения указателей после размещения переменных в памяти:\n” cout<<”P1 =”<<iP1<<”\n”; cout<<”P2 =”<<iP2<<”\n”; cout<<”P3 =”<<iP3<<”\n”;
cout<<”Значения динамических переменных:\n”
i=*p1; f=*p2; d=*p3;
cout<<” *P1 =”<<i<<”\n”; cout<<” *P2 =”<<f<<”\n”; cout<<” *P3 =”<<d<<”\n”;
} |
Рисунок 1.23 – Функция размещения динамических переменных в памяти компьютера
1.4.4 Запуск проекта
Запустите проект на выполнение и результаты перенесите в отчет в виде изображения интерфейса проекта.
