Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛекцииЯзыки прогрИб.doc
Скачиваний:
27
Добавлен:
12.11.2019
Размер:
922.11 Кб
Скачать

5.3. Адресные типы данных: указатели и ссылки

Указатели

В языке С++ существуют два способа доступа к переменным и функциям : по имени переменной или функции и по адресу с помощью указателей.

Указатель - это переменная, содержащая адрес другой переменной или функции. Использование указателей позволяет упростить алгоритм и повысить его эффективность за счет простого доступа к большим объемам данных с помощью указателя. В стек копируется не весь объем данных, а только одно число -адрес первого байта данных.

Для инициализации указателя адресом переменной служит операция & (операция адресации или операция взятия адреса).Для доступа к переменной через указатель используется операция * (операция разадресации, или разыменования, или обращения по адресу, или косвенной адресации).

Преимущества указателей следующие:

  • экономия памяти, более компактное размещение данных с использованием массивов указателей;

  • эффективное выполнение программы при использовании указателей в качестве параметров функции при передаче агрегированных данных за счет того, что в стек копируется не весь объем данных, а только одно число -адрес первого байта данных;

  • возможность изменения значений переменных вызывающей функции при изменении значений параметров вызываемой функции, т.е. возможность возврата значений помимо оператора return;

Альтернативой указателям являются ссылки.

Ссылки

Ссылка- это переменная, которая является альтернативным именем другой переменной. Ссылка при объявлении должна быть инициализирована и только один раз. После инициализации ее значение изменять нельзя, т.е. нельзя, чтобы такая ссылка ссылалась на другую переменную.

Ссылки используются в качестве формальных параметров функций при передаче агрегированных данных (структур, объединений). При вызове функции автоматически вычисляется адрес фактического параметра (переменной вызывающей функции) и помещается в стек, затем копия адреса присваивается формальному параметру (ссылке). Аналогично выполняется возврат значения функции по ссылке.

Преимущества ссылок заключаются в следующем:

  • эффективное выполнение программы при использовании ссылок в качестве параметров функций при передаче агрегированных данных (как и указатели);

  • возможность изменения значений переменных вызывающей функции при изменении значений параметров вызываемой функции, т.е. возможность использования ссылок для возврата значений помимо оператора return ( как и указатели);

  • по сравнению с указателями, ссылки более удобны при программировании, т.к. используются обычные имена переменных и не требуются операции адресации и разадресации.

5.4. Стандартные библиотеки языка

Стандартная библиотека С++ определяет базовый набор функций, общий для всех компиляторов ISO/ANSI C++. Он содержит широкий диапазон подпрограмм, объединенных по назначению в файлы заголовков:

  • cmath – математические функции;

  • cctype – функции классификации и преобразования символов;

  • cstdio – функции ввода-вывода уровня потоков;

  • cstdlib – функции преобразований символов и строк в числовые представления и обратно;

  • cstring – функции обработки строк;

  • iostream – функции ввода-вывода потоков базового С++;

  • iomanip – манипуляторы ввода-вывода потоков С++;

  • fstream – классы потоков С++, поддерживающие файловый ввод-вывод;

  • и т. д.

По мере изучения тем дисциплины мы будем знакомится с функциями стандартных библиотек С++.