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

ЛР-4 / ЯП №4

.docx
Скачиваний:
4
Добавлен:
25.05.2026
Размер:
342.61 Кб
Скачать

Министерство науки и высшего образования Российской Федерации

Федеральное государственное автономное образовательное учреждение

высшего образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра безопасности информационных систем (БИС)

УКАЗАТЕЛИ И ССЫЛКИ

Отчет по лабораторной работе №4

по дисциплине «Языки программирования»

Студент гр.

_______

_______

Принял:

Доцент каф. КИБЭВС, д.т.н., доцент

_______ Романов А. С.

_______

Оглавление

Введение 3

Ход работы 4

Заключение 10

Введение

Цель работы – изучение механизмов работы указателей и ссылок.

В ходе работы был написан код на ЯП С++, а также, на выбранном по желанию, Python. Были реализованы типизированные и нетипизированными указатели. Были реализовано сравнение ссылок и указателей. Написан код для указателей на данные и функции. Показана разница между указателей-константами и указателями на константы. Написано ссылание указателей на указатели. Произведена работа с многоуровневыми указателями.

Код написан на ЯП C++ и Python.

Ход работы

На рисунке 1.1 сравниваются типизированные и нетипизированные указатели. Рисунок 1.2 демонстрирует синтаксис указателя на функцию. Рисунок 1.3 показывает разницу между самим указателем и указуемым объектом. Рисунок 1.4 поясняет отличие константного указателя от указателя на константу. На рисунке 1.5 приведён пример многоуровневой адресации, а на рисунке 1.6 — ключевые отличия указателей от ссылок.

Рисунок 1.1 – Код сравнения типизированных и не типизированных указателей

Рисунок 1.2 – Код указателя на функцию

Рисунок 1.3 – Код разницы между указателем и указуемым объектом

Рисунок 1.4 – Код указателя константы и указателя на константу

Указатель-константа можно менять значение указуемого объекта, но нельзя менять значение самого указателя.

Указатель на константу значение указуемого объекта менять нельзя, но сам указатель можно переназначать.

Рисунок 1.5 – Код многоуровневого указателя

Многоуровневые указатели — это указатели, которые ссылаются на другие указатели. Число звёздочек * при объявлении определяет уровень вложенности. Чтобы получить доступ к значению, на которое ссылается указатель, его необходимо разыменовывать соответствующее количество раз.

Рисунок 1.6 – Код разницы между указателями и ссылками.

Указатель — переменная, хранящая адрес другого объекта; требует явного разыменования (*ptr) для доступа к значению; можно переназначать на другой адрес; может быть nullptr.

Ссылка — псевдоним существующего объекта; объявляется как тип& имя = объект; автоматически разыменовывается при использовании; нельзя переназначить после инициализации; не может быть null.

На рисунке 1.7 сравниваются типизированные и нетипизированные указатели. Рисунок 1.8 демонстрирует синтаксис указателя на функцию. Рисунок 1.9 показывает разницу между самим указателем и указуемым объектом. На рисунке 1.10 приведён пример многоуровневой адресации, а на рисунке 1.11 — ключевые отличия указателей от ссылок, а на рисунке 1.12 — ключевые отличия указателей от ссылок.

В Python нет явных указателей. Все переменные — это имена-ссылки (references), привязанные к объектам в куче. Управление памятью автоматическое (GC + подсчёт ссылок). Ниже показаны концептуальные аналоги с пояснениями.

Рисунок 1.7 – Код сравнения типизированных и не типизированных ссылок

Рисунок 1.8 – Код указателя на функцию

Рисунок 1.9 – Код разницы между переменной и объектом

Рисунок 1.10 – Код аналога константных указателей

Рисунок 1.11 – Код многоуровневых ссылок

Рисунок 1.12 – Код указателей и ссылок

Заключение

В ходе выполнения работы было осуществлено изучение механизмов работы указателей и ссылок.

Томск 2026

Соседние файлы в папке ЛР-4