- •Функции
- •Описание функции
- •Описание функции
- •Описание функции: примеры
- •Прототип функции
- •Пример: неверное обращение
- •Пример: верное обращение к
- •Задача
- •Решение
- •Решение
- •Вызов функции
- •Вызов функции: пример
- •Передача параметров
- •Передача параметров
- •Текст программы void main()
- •Результат выполнения программы:
- •Указатели
- •Указатели
- •Указатели на объект
- •Примеры
- •Инициализация указателей
- •Операции с указателями
- •Операции с указателями
- •Операции с указателями
- •Операции с указателями
- •Операции с указателями
- •Передача параметров по адресу
- •Вызов функции
- •Передача параметров по ссылке
- •Ссылки
- •Ссылки
- •Ссылки
- •Ссылки
- •Передача параметров по cсылке
- •Вызов функции
- •Пример
- •Пример
Вызов функции
При вызове функции формальные параметры заменяются на фактические
Количество, типы и порядок следования фактических параметров должен полностью соответствовать перечню формальных параметров
Вызов функции: пример
Пусть задана фунция int max(int x,int y)
{(if (x>y) return x; else return(y); }
Вызов max(a,b); и max(b,a); для целых значений a и b даст различные результаты.
Если переменная s – типа float, то вызов функции max(s,a); даст сообщение об ошибке
Передача параметров
Существует два способа передачи параметров:
По значению
Операторы функции работают только с копиями передаваемых параметров. Возможности изменить сами значения у функции нет
По адресу
Функция осуществляет доступ к ячейкам памяти по передаваемым адресам и может изменить значения аргументов
Передача параметров
Пусть необходимо написать функцию, которая меняет два значения x и y местами.
Текст программы #include <stdio.h> void swap(int x, int y)
{ printf(“начальные значения:%d %d\n”, x,y);
int temp=y; y=x;x=temp;
printf(“измененные значения: %d %d \n конец функции\n”, x,y);
}//swap
Текст программы void main()
{
int a,b; printf(“a=“);scanf(“%d”, &a); printf(“b=“);scanf(“%d”, &b); swap(a,b);
printf(“новые значения : ”, a,b); }// main
Результат выполнения программы:
a=10
b=20
начальные значения: 10 20 измененные значения: 20 10 конец функции новые значения : 10 20
Выводы: при передаче параметров по значению после выхода из функции параметры имеют первоначальные значения
Функция работает с копиями параметров
Указатели
Указатели предназначены для хранения адресов памяти
Указатель не является самостоятельным типом: он всегда связан с каким-либо конкретным типом
Указатели
Существуют указатели трех типов
Указатель на объект – в этом случае в указателе хранится адрес области памяти, в которой хранятся данные определенного типа
Указатель на функцию – содержит адрес в сегменте кода, по которому располагается исполняемый код функции
Указатель на void – применяется в том случае, когда конкретный тип объекта заранее не определен
Указатели на объект
Указатель может быть
Константой
Переменной
Указывать на константу
Указывать на переменную