Лабораторная работа: Работа с функциями в языке программирования Си
{int y;
y=(x<0)?–x:x; /*Определение абсолютной величины числа*/
return (y); /*Возвращает значение у вызывающей программе*/
}
В приведенной программе описание типа функции было опущено. Это возможно только в том случае, если возвращенное значение имеет целый тип. Во всех остальных случаях описание типа функции обязательно. приведем пример, когда результатом работы функции будет число двойной точности.
Пример 2. Оформить в виде функции вычисление f=Öx + y/z.
В первом примере функция хранилась в виде отдельного файла и включалась процедурой #include. Функция может быть включена в один файл с вызывающей программой. В этом случае процедура #include не требуется, а сама функция должна быть объявлена в основной программе, если она имеет не целый тип. Приведем программу для примера 2, оформленную таким способом.
Программа имеет вид:
#include <stdio.h>
main()
{ double f,x=5.5,y=10.1,z=20.5, vv() /*объявлены переменные и функция vv*/
f=vv(x,y,z); /*обращение к функции vv*/
printf("lf",f); /*вывод результата */
}
/*функция */
double vv(x,y,z)
double x,y,z; /*объявление переменных функции */
{double f;
f=sqrt(x)+y/z; /*вычисление значения функции */
return(f); /*возврат вычисленного значения функции */
}
В языке СИ аргументы функции передаются по значению, т.е. вызванная функция получает временную копию каждого аргумента, а не его адрес. Это означает, что функция не может изменять оригинальный аргумент в вызвавшей ее программе. Однако это легко сделать, если передавать в функцию не переменные, а их адреса.
Пример 3. В приведенной ниже программе вводятся некоторые значения переменных а и b, потом в функции izm они меняются местами.
#include <stdio.h>
main()
{int a,b;
scanf ("%d %d", &a, &b);
izm (&a, &b); /*обращение к функции izm; аргументами являются адреса переменных a и b*/
printf("%d, %d",a, b); /*вывод на экран измененных значений */