
Министерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра комплексной информационной безопасности электронно-вычислительных систем (КИБЭВС)
Указатели и ссылки
Отчет по лабораторной работе №4
по дисциплине «Языки программирования»
Студент гр. 723-1
________
______2025г
Руководитель
младший научный сотрудник
_______ А.В. Куртукова
_______2025г
Введение
Цель работы:
Изучение механизмов работы указателей и ссылок
Задание
Изучить краткие теоретические сведения.
Подготовить примеры использования указателей и ссылок для языка C++ и языка программирования, определенного выбранным вариантом. Сравнить возможности языков. При этом продемонстрировать:
разницу между типизированными и нетипизированными указателями;
разницу между указателями на данные и на функции;
разницу между указателем и указуемым объектом;
разницу между указателями-константами и указателями на константу;
особенности работы с многоуровневыми указателями;
разницу между указателями и ссылками.
3. Написать отчет и защитить у преподавателя.
Ход работы
1 Программа на С++
В самом начале работы была создана программа на языке программирования C++, демонстрирующая работу указателей и ссылок.
Часть программы, показывающая разницу между типизированными и нетипизированными указателями (рисунок 1.1).
Рисунок 1.1 – Разница между типизированными и нетипизированными указателями
Часть программы, показывающая разницу между указателями на функции и указателями на данные (рисунок 1.2).
Рисунок 1.2 – Разница между указателями на функцию и на данные
Можно заметить, что для указателей на функции определена операция вызова функции.
Далее следует часть программы, демонстрирующая разницу между указателями и указуемыми объектами (рисунок 1.3).
Рисунок 1.3 – Разница между указателями и указуемыми объектами
На следующем этапе работы была создана часть программы, показывающая разницу между указателями-константами и указателями на константы (рисунок 1.4).
Рисунок 1.4 – Разница между указателями-константами и указателями на константы
Отличие заключается в том, что указатель-константа, в отличие от указуемого объекта нельзя изменять. Сам же указатель в данном случае может изменяться.
Далее были рассмотрены особенности работы с многоуровневыми указателями (рисунок 1.5).
Многоуровневые указатели представляют из себя указатели на указатели. В результате разыменования таких указателей получается адрес, который хранится в указателе уровнем ниже.
Рисунок 1.5 – Особенности работы с многоуровневыми указателями
На последнем этапе нужно было показать разницу между указателями и ссылками (рисунок 1.6).
Рисунок 1.6 – Разница между указателями и ссылками
Написанный код программы представлен в приложение А.
1 Программа на с#
На рисунке 1.7 представлен код сравнения типизированных и не типизированных указателей.
Рисунок 1.7 – Код сравнения типизированных и не типизированных указателей
На рисунке 1.8 представлен код разницы между указателями на функцию и на данные.
Рисунок 1.8 – Разница между указателями на функцию и на данные
На рисунке 1.9 представлен код разницы между указателем и указуемым объектом.
Рисунок 1.9 – Код разницы между указателем и указуемым объектом
На рисунке 1.10 представлены код указателя константы и указателя на константу.
Рисунок 1.10 – Разница между указателями-константами и указателями на константы
На рисунке 1.11 представлен код многоуровневого указателя.
Рисунок 1.11 – Код многоуровневого указателя
На рисунке 1.12 представлен код разницы между указателями и ссылками.
Рисунок 1.12 – Код разницы между указателями и ссылками.
Написанный код программы представлен в приложение Б.