Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Tekhnologia_programmirovania.pdf
Скачиваний:
182
Добавлен:
08.04.2015
Размер:
1.76 Mб
Скачать

13010

Впрограмме в выходной поток направляется манипулятор hex, устанавливающий режим вывода целых в шестнадцатеричной форме, благодаря чему адреса выводятся как шестнадцатеричные числа.

Оператор << выводит значение адреса при выводе указателя, за исключением указателей типа char*. При выводе таких указателей печатается не значение указателя (адрес), а строка символов,

расположенная по адресу, хранящемуся в указателе, поэтому, чтобы напечатать значения указателя типа char*, производится его приведение к типу int* выражением (int*)s.

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

Массив s создается, после того, как память от pd освобождена. Видно, что под s выделяется то же место в памяти, которое раньше занимало число double, адрес которого хранился в pd.

Задачи -. Указатели и ссылки

Указатель есть адрес некоторого объекта. Если p – указатель на объект, то *p есть сам объект. Адрес объекта возвращает оператор &, который ставится перед именем объекта.

125.Напишите функцию copy(char *s, char *t) копирования строки t

встроку s, используя указатели.

126.Перепишите функцию revers (программа 23) с использованием указателей.

127. Используя указатели, напишите функцию strcat(char *s, char *t), копирующую строку t в конец строки s.

128.Напишите функцию strend(char *s, char *t), которая выдает 1, если строка t расположена в конце строки s, и нуль в противном случае.

129.Напишите функцию, которая получает в качестве аргумента указатель на функцию double (*f)(double x) и возвращает минимальное значение функции f на отрезке [a, b].

130.Напишите функцию, которая получает в качестве аргумента указатель на функцию double (*f)(double x) и возвращает среднее значение функции f на отрезке [a, b], вычисленное по n узловым точкам.

131.Напишите функцию, которая получает в качестве аргумента указатель на функцию double (*f)(double x) и возвращает разницу между максимальным и минимальным значение функции f на отрезке [a, b].

132.Напишите функцию, которая возвращает ссылку на максимальный из трех своих аргументов. Используя ее, замените значение максимального из трех чисел их средним значением..

Указатели и ссылки 131

133.Напишите функцию, возвращающую ссылку на максимальный элемент массива. Используйте ее в программе, которая заменит значение максимального элемента массива на среднее арифметическое значение элементов этого массива.

134.Напишите функции, возвращающие ссылки на максимальный

иминимальный элементы массива. Используйте их для обмена значениями максимального и минимального элементов.