Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Цвинтарный Иван 362-2 Лабораторная работа 3

.docx
Скачиваний:
3
Добавлен:
21.06.2023
Размер:
194.64 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ

РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Томский Государственный Университет Систем Управления и Радиоэлектроники (ТУСУР)

Кафедра промышленной электроники (ПрЭ)

ОТЧЁТ

по результатам лабораторной работы №3

по дисциплине «Информатика»

Указатели

Студент гр. 362-2

подпись ______ Цвинтарный И.В.

дата __________

Руководитель

подпись ___________ Савин Д.А.

дата __________

Томск 2022

Оглавление

Введение 3

1. Ход работы 4

2. Индивидуальное задание 5

3. Программный код – текст программы 6

4. Результаты работы программы 8

5. Заключение 9

Введение

Задачами третей практической работы является написание программы на языке C++, используя указатели. Научиться работать со статическими и динамическими переменными. Освоить применение операций адресации и разадресации. Научиться выделять память под динамические переменные и освобождать ее при помощи операторов new и delete. Освоить обращение к динамическим объектам. Научиться выделять память под динамические переменные и освобождать ее при помощи функций calloc, malloc и free. Научиться визуализировать адреса статических и динамических объектов. Освоить функции rand() генерирующие случайные числа. Написать программу так, чтобы не произошла утечка памяти. Выполнить индивидуальное задание.

1. Ход работы

  1. Создать проект на Visual C++, написать программу на C++ в соответствии заданным индивидуальным заданием.

  2. Вывести требуемые адреса указателей и переменные.

  3. Составить отчет, отразить программный код с комментариями, привести скриншоты с результатами работы программы.

  4. Представить преподавателю результат.

2. Индивидуальное задание

Вариант индивидуального задания – 23.

Рисунок 2.1 – формулировка задания

Рисунок 2.2 – особенность ИЗ

3. Программный код – текст программы

#include <iostream>

#include <time.h>

using namespace std;

#define rnd1(a, b) (rand()%((b) - (a) + 1) + (a))

#define rnd2(a, b) (((double)rand()/RAND_MAX)*((b) - (a)) + (a))

int main()

{

setlocale(LC_ALL, "RUS");

srand(time(NULL));

int X = rnd1(-23, 235);

int* XPtr = &X;

int* YPtr = new int;

*YPtr = rnd1(-23, 235);

cout << "X=" << X << " " << "Xptr: " << XPtr << endl;

cout << "*YPtr=" << *YPtr << " " << "YPtr: " << YPtr << endl;

delete YPtr;

cout << "XPtr + 1: " << XPtr + 1 << sizeof(int) << endl;

cout << "(XPtr + 1) - XPtr=" << (XPtr + 1) - XPtr << sizeof(int) << endl;

float* APtr = (float*)malloc(sizeof(float));

float* BPtr = (float*)calloc(1, sizeof(float));

*APtr = rnd2(-23.0, 235.0);

*BPtr = rnd2(-23.0, 235.0);

cout << "*APtr=" << *APtr << " " << "APtr: " << APtr << endl;

cout << "*BPtr=" << *BPtr << " " << "BPtr: " << BPtr << endl;

void* VPtr = APtr;

APtr = BPtr;

BPtr = (float*)VPtr;

cout << "*APtr=" << *APtr << " " << "APtr: " << APtr << endl;

cout << "*BPtr=" << *BPtr << " " << "BPtr: " << BPtr << endl;

free(APtr);

free(BPtr);

}

4. Результаты работы программы

Рисунок 4.1 – первый запуск программы

Рисунок 4.2 – второй запуск программы

Рисунок 4.3 – третий запуск программы

5. Заключение

В ходе практической работы научились использовать указатели в работе. Написали программу на языке С++, согласно своему индивидуальному заданию. Корректно создали программный код, благодаря чему утечки памяти не произошло. В конечном счете, вывели адреса указателей и значения переменных.