Sp_Lab5
.docxМинистерство цифрового развития, связи и массовых коммуникаций Российской Федерации
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский Технический Университет Связи и Информатики»
Кафедра математической кибернетики и информационных технологий
Лабораторная работа №5 по дисциплине «Системное программирование»:
«Основы работы с указателями в языке программирования С»
Выполнил
Проверил:
Фатхулин Тимур Джалильевич
Оглавление
Цель работы 3
Задание на лабораторную работу 3
1. Создайте проект для ознакомительного использования указателей. 3
2. Создайте проект с объявлением и использованием указателей. 3
3. Создайте проект для побайтового заполнения области памяти. 4
4. Создайте проект с использованием указателей общего назначения. 5
5. Создайте проект для побайтового заполнения целочисленного значения с использованием указателей общего назначения. 5
6. Создайте проект с многоуровневой адресацией. 5
Вывод 6
Контрольные вопросы 6
Цель работы
Изучить и практически освоить основы работы с указателями в языке программирования C.
Задание на лабораторную работу
Создайте проект для ознакомительного использования указателей.
Рисунок 1 – Реализация программы ukaz1.c
Вывод: Произошло изменение данных. В первом случае мы выводили данные через переменные, которым задали значения через указали. А во втором случае мы напрямую изменили значения в переменных.
Создайте проект с объявлением и использованием указателей.
Рисунок 2 – Реализация программы ukaz2.c
Вывод: Адрес указателя можно получить, указав его имя, а значение, можно получить с помощью операции «*»
Создайте проект для побайтового заполнения области памяти.
Рисунок 3 – Реализация программы ukaz3.c
Вывод: Программа побайтово заполняет переменную, а после ее выводит. В втором случае происходит изменение одного байта и вывод значения.
Создайте проект с использованием указателей общего назначения.
Рисунок 4– Реализация программы ukaz4.c
Вывод: Происходит использование общего указателя, для дальнейшего вывода данных.
Создайте проект для побайтового заполнения целочисленного значения с использованием указателей общего назначения.
Рисунок 5 – Реализация программы ukaz5.c
Вывод: Происходит заполнение значения через указатель, определяется количество байт, выделенных для переменной и записывается в первый байт числа, далее выводится значение. Далее проверяется содержимое байтов, выделенных для записи числа
Создайте проект с многоуровневой адресацией.
Рисунок 6 – Реализация программы ukaz6.c
Вывод: При изменении значения указателя, который ссылается на указатель, будет изменены везде значения на то число, которое было присвоено указателю, который ссылается на указатель. То есть во всех 2 указателях и 1 переменной будет 1 значение
Вывод
Я научился работать в консоли, работать с командой make и создавать кроссплатформенное приложение.
Контрольные вопросы
Каково назначение указателей?
Переменная, предназначенная для хранения адреса какоголибо объекта (переменной, массива и тд.)
Каким образом можно получить значение адреса, по которому записана переменная?
Перед именем переменной написать “&”
Каким образом можно получить доступ (для чтения или записи) к значению, записанному по адресу, хранящемуся в указателе?
Перед именем переменной написать «*»
Как объявляются указатели, каким образом они используются?
«Тип переменной» *«название переменной»
Для того, чтобы ссылаться на адрес ячейки с значением переменной
Как осуществить побайтовое заполнение области памяти?
При помощи цикла с переходом на следующий байт
Зачем используются указатели общего назначения?
Для созданий функций общего назначения
Поясните использование указателей общего назначения.
Например, когда нужно реализовать функцию, принимающую значения разных типов, и, в зависимости от этого, выполняющую различные действия?
Поясните побайтовое заполнение целочисленного значения с использованием указателя общего назначения.
При помощи указателя общего назначения происходят все основные действия связанные с изменением значения в памяти
Зачем нужна многоуровневая адресация?
Для упрощения изменения огромного количества значений в указателях
Как реализовывается многоуровневая адресация?
При помощи указателя, который будет ссылаться на предыдущий указатель и так далее до переменной.