Общий вид описания функции
Описание функции содержит заголовок со списком формальных параметров и тело функции.
Тип Имя_функции(список формальных параметров)
{
Описание локальных переменных;
Операторы тела функции;
return результат;
}
Тип, указываемый в заголовке функции, определяет тип результата ее работы, который будет возвращаться в точку вызова. Если тип не указан, то по умолчанию подразумевается int (целый). Для возврата значения в теле функции должен быть оператор return. В дальнейшем будем называть такую функцию типизированной.
Если функция не должна возвращать результат, то она считается не- типизированной, что задается ключевым словом void, стоящим в заголовке на месте типа. В этом случае оператор return в функции не требуется.
voidимя_функции(список формальных параметров)
{
Описание локальных переменных;
Операторы тела функции;
}
Рассмотрим пример оформления программы, содержащей текст типизированной функции maximum для нахождения максимального значения из двух заданных целых чисел.
#include "stdafx.h"
int maximum(int a, int b) //заголовок функции maximum
{
int c;//локальная переменная
if (a>b)
c=a;
Else
c=b;
return c;// возвращение результата
}
void main()
{ int x,y,z;
printf("Введите x и y:");
scanf("%d%d",&x,&y); // ввод двух чисел
z=maximum(x,y);// обращение к функции maximum
printf("max=%d\n",z);
}
Рассмотрим пример программы, использующей нетипизированную функцию. Функция Form_matrix будет заполнять целочисленную матрицу размера mxn случайными числами.
#include "stdafx.h"
#include "stdlib.h"
#define M 50
void Form_matrix(int A[][M], int m, int n)/*заголовок функции Form_matrix */
{
int i,j; //локальные переменные
for(i=0;i<m;i++)
for(j=0;j<n;j++)
A[i][j]=rand()%100-50;
}
void main()
{ int m1,n1,m2,n2; //переменные для задания размерности матриц
int Matr1[M][M],Matr2[M][M]; /*объявление двух матриц размера 50х50 */
printf("Введите размерность Mart1 ");
scanf("%d%d",&m1,&n1); // ввод двух чисел
Form_matrix(Matr1,m1,n1);//обращение к функции Form_matrix
printf("Введите размерность Mart2 ");
scanf("%d%d",&m2,&n2); // ввод двух чисел
Form_matrix(Matr2,m2,n2); //обращение к функции Form_matrix
…
}
Данный пример демонстрирует использование функции Form_matrix дважды в главной функции. При первом обращении к функции произойдет заполнение матрицы Mart1, а при втором обращении – Matr2, так как их имена указаны в соответствующих обращениях к функции. Функция Form_matrix может заполнить матрицу любого размера, не превышающего 50х50. (Конечно, можно было создать динамические матрицы, но это другая история, и мы говорили о ней в параграфе «Динамическая память»).
В теории о подпрограммах-функциях следует остановиться еще на трех важных вопросах:
- обращение к нетипизированной и типизированной функциям;
- передача параметров в функцию;
- возвращение результатов.
Дата добавления: 2015-02-10; просмотров: 879;