ЛР-4 / ЯП №4
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра безопасности информационных систем (БИС)
УКАЗАТЕЛИ И ССЫЛКИ Отчет по лабораторной работе №4
по дисциплине «Языки программирования»
Студент гр.
_______
_______
Принял:
Доцент каф. КИБЭВС,
д.т.н., доцент
_______ Романов А. С.
_______
Томск 2026
|
Оглавление |
Введение................................................................................................................... |
3 |
Ход работы............................................................................................................... |
4 |
Заключение .............................................................................................................. |
9 |
2
Введение
Цель работы – изучение механизмов работы указателей и ссылок.
В ходе работы был написан код на ЯП С++, а также, на выбранном по желанию, Python. Были реализованы типизированные и нетипизированными указатели. Были реализовано сравнение ссылок и указателей. Написан код для указателей на данные и функции. Показана разница между указателей-
константами и указателями на константы. Написано ссылание указателей на указатели. Произведена работа с многоуровневыми указателями.
Код написан на ЯП C++ и Python.
3
Ход работы
На рисунке 1.1 сравниваются типизированные и нетипизированные указатели. Рисунок 1.2 демонстрирует синтаксис указателя на функцию.
Рисунок 1.3 показывает разницу между самим указателем и указуемым объектом. Рисунок 1.4 поясняет отличие константного указателя от указателя на константу. На рисунке 1.5 приведён пример многоуровневой адресации, а
на рисунке 1.6 — ключевые отличия указателей от ссылок.
Рисунок 1.1 – Код сравнения типизированных и не типизированных
указателей
Рисунок 1.2 – Код указателя на функцию
4
Рисунок 1.3 – Код разницы между указателем и указуемым объектом
Рисунок 1.4 – Код указателя константы и указателя на константу
Указатель-константа можно менять значение указуемого объекта, но нельзя менять значение самого указателя.
Указатель на константу значение указуемого объекта менять нельзя, но сам указатель можно переназначать.
5
Рисунок 1.5 – Код многоуровневого указателя
Многоуровневые указатели — это указатели, которые ссылаются на другие указатели. Число звёздочек * при объявлении определяет уровень вложенности. Чтобы получить доступ к значению, на которое ссылается указатель, его необходимо разыменовывать соответствующее количество раз.
Рисунок 1.6 – Код разницы между указателями и ссылками.
Указатель — переменная, хранящая адрес другого объекта; требует явного разыменования (*ptr) для доступа к значению; можно переназначать на другой адрес; может быть nullptr.
Ссылка — псевдоним существующего объекта; объявляется как тип& имя = объект; автоматически разыменовывается при использовании;
нельзя переназначить после инициализации; не может быть null.
6
На рисунке 1.7 сравниваются типизированные и нетипизированные указатели. Рисунок 1.8 демонстрирует синтаксис указателя на функцию.
Рисунок 1.9 показывает разницу между самим указателем и указуемым объектом. На рисунке 1.10 приведён пример многоуровневой адресации, а на рисунке 1.11 — ключевые отличия указателей от ссылок, а на рисунке 1.12 —
ключевые отличия указателей от ссылок.
В Python нет явных указателей. Все переменные — это имена-ссылки
(references), привязанные к объектам в куче. Управление памятью автоматическое (GC + подсчёт ссылок). Ниже показаны концептуальные аналоги с пояснениями.
Рисунок 1.7 – Код сравнения типизированных и не типизированных ссылок
Рисунок 1.8 – Код указателя на функцию
7
Рисунок 1.9 – Код разницы между переменной и объектом
Рисунок 1.10 – Код аналога константных указателей
8
Рисунок 1.11 – Код многоуровневых ссылок
Рисунок 1.12 – Код указателей и ссылок
9
Заключение
В ходе выполнения работы было осуществлено изучение механизмов
работы указателей и ссылок.
10
