- •1.1. Идентификаторы
- •1.5. Структура программы С++
- •1.6. Директивы препроцессора
- •1.8. Функции библиотеки math.h
- •1.9. Форматированный ввод/вывод данных
- •2.3. Целый тип данных
- •2.4. Символьный тип данных
- •2.8. Явное преобразование типов
- •3.2. Операция присваивания
- •3.7. Использование блоков
- •4.1. Оператор условной передачи управления if
- •5.4.4. Функция exit
- •5.4.5. Функция abort
- •6.3. Многомерные массивы
- •7.2.1. Унарные операции
- •7.2.2. Арифметические операции и операции сравнения
- •7.3. Инициализация указателей
- •7.4. Работа с динамической памятью
- •7.5. Создание одномерного динамического массива
- •8.2.2. Передача параметров по ссылке
- •8.2.3. Передача параметров по указателю
- •8.2.6. Передача переменного числа параметров
- •8.3. Встраиваемые функции
- •9.2. Функции для работы со строками
- •9.3. Алгоритмы работы со строками
- •10.2. Объявление и использование объединений
- •11.2. Функции для работы с файлами
- •13.3. Целесообразность использования рекурсии
- •14.1. Простые методы сортировки
- •14.1.1. Метод пузырька
- •14.2. Улучшенные методы сортировки
- •14.2.1. Метод Шелла
- •15.2. Поиск делением пополам
- •15.3. Интерполяционный поиск
- •17.2. Использование древовидных структур
- •19.6. Хеш-таблица на основе связанных списков
- •19.7. Метод блоков
- •3. Программирование циклических алгоритмов
- •5. Использование двумерных массивов
- •7. Программирование с использованием строк
- •9. Программирование с использованием файлов
- •12. Поиск по ключу в одномерном массиве
- •15. Работа с древовидными структурами данных
- •16. Вычисление алгебраических выражений
- •2. Выполнение программы
- •3. Отладка программы
7. Использование указателей
7.1. Объявление указателя
Память компьютера представляет собой массив последовательно пронумерованных ячеек. При объявлении данных в памяти выделяется непрерывная область для их хранения. Например, для переменной типа int выделяется участок памяти размером 4 байта. Номер первого байта, выделенного под переменную участка памяти, называется адресом этой переменной.
Указатель – это переменная, значением которой является адрес участка
памяти. Формат объявления указателя: |
Р |
|
Тип_данного *имя_указателя; |
||
Например: |
||
И |
||
int *a; double *b, *d; char *c; |
||
|
||
На один и тот же участок памяти может ссылаться любое число указате- |
||
лей, в том числе и различных типов. Допустимо описыватьУпеременные типа |
указатель на указатель (указатель на ячейку памяти, которая в свою очередь со- |
||||||||
держит адрес другой ячейки памяти). Например: |
Г |
|||||||
|
int *um1, **um2, ***um3; |
|
|
|
Б |
|||
В языке Си существует три вида у |
з телей: |
|
||||||
1. |
Указатель на объект известного |
|
. |
|
||||
2. |
|
|
|
|
|
типа |
|
|
Указатель типа void. Прим ня тся в случаях, когда тип объекта заранее |
||||||||
не определен. |
|
к |
|
|
||||
3. |
Указатель на функцию. Позволяет обращаться с функциями, как с пе- |
|||||||
ременными. |
7.2. Операциит |
над указателями |
||||||
|
|
|
о7.2.1. Унарные операции |
|||||
Над указате |
можно провести две унарные операции: |
|||||||
1. |
|
|
ями |
|
|
|
|
|
«&» (взять адрес). Операция позволяет получить адрес переменной. |
||||||||
2. |
«*» (операциял разадресации). Позволяет получить доступ к величине, |
|||||||
расположенной по указанному адресу. |
|
|
|
|
||||
|
|
б |
|
|
|
|
|
|
|
|
7.2.2. Арифметические операции и операции сравнения |
||||||
Привыполнении арифметических операций с указателями автоматически |
||||||||
учитывается размер данных, на которые они указывают. |
||||||||
Б |
|
|
|
|
|
|
|
Инкремент и декремент. Перемещает указатель к следующему или предыдущему элементу массива.
Например:
int *um, a[5] = {1,2,3,4,5}; um = a;
42