- •Функции
- •Описание функции
- •Описание функции
- •Описание функции: примеры
- •Прототип функции
- •Пример: неверное обращение
- •Пример: верное обращение к
- •Задача
- •Решение
- •Решение
- •Вызов функции
- •Вызов функции: пример
- •Передача параметров
- •Передача параметров
- •Текст программы void main()
- •Результат выполнения программы:
- •Указатели
- •Указатели
- •Указатели на объект
- •Примеры
- •Инициализация указателей
- •Операции с указателями
- •Операции с указателями
- •Операции с указателями
- •Операции с указателями
- •Операции с указателями
- •Передача параметров по адресу
- •Вызов функции
- •Передача параметров по ссылке
- •Ссылки
- •Ссылки
- •Ссылки
- •Ссылки
- •Передача параметров по cсылке
- •Вызов функции
- •Пример
- •Пример
Функции
Описание функции
Тип имя (список формальных параметров)
{
тело функции
}
Где тип – тип результата
имя – имя функции
список формальных параметров –
содержит как имена параметров, так и их спецификации
Описание функции
тело функции:
определения переменных исполняемые операторы
Описание функции: примеры
//функция возвращает значение целого типа
int max(int x, int y)
{ if (x>y) return x; else return y;}
//функция не возвращает значения
void print(float x)
{
printf (“\n значение аргумента равно %7.2f \n”, x);
}
Прототип функции
Прототип функции состоит только из заголовка :
Тип имя (список формальных параметров)
При описании прототипа функции список формальных параметров может содержать только спецификации параметров
Прототип должен быть обязательно если описание функции стоит ниже вызывающей ее функции
Пример: неверное обращение
void main()
{int a,b,c; float m;
scanf(“%d %d %d”, &a,&b,&c);
m=(float)(max(a,b)+max(b,c))/max(a,a);
//функция max(a,b) не определена !!!
printf(“\n m=%7.2f”,m);
} // main
//описание функции
int max(int x,int y)
{ (if (x>y) return x; else return(y);}
Пример: верное обращение к
функции
int max(int ,int ); // прототип функции
void main()
{ int a,b,c; float m;
scanf(“%d %d %d”, &a,&b,&c);
m=(float)(max(a,b)+max(b,c))/max(a,a); printf(“\n m=%7.2f”,m);
} // main
//описание функции
int max(int x,int y)
{ (if (x>y) return x; else return(y); }
Задача
Даны два комплексных числа z=a+b*i, y=c+d*I
Вычислить
|x|, |y|, |x+y|
Решение
float mod(float a, float b);// прототип функции void main()
{
float a,b,c,d,mx,my,mxy;
scanf(“%f %f %f %f”, &a,&b,&c,&d); mx=mod(a,b); //вызов функции my=mod(c,d); mxy=mod(a+c,b+d);
printf(“\n|x|=%f |y|=%f |x+y|=%f “, mx,my,mxy);
}
Решение
// описание функции
float mod (float a, float b);
{
float s=sqrt(a*a+b*b); return s;
}
Здесь:
a и b – формальные параметры s – локальная переменная