Лабораторная работа: Работа с функциями в языке программирования Си
#include "izm.c" /*включение файла izm.c с функцией izm */
/*функция*/
izm(a, d); /*аргументы a и b являются указателями */
int *a, *b; /* *a и *b – значения, на которые указывают указатели */
{int c;
c=*a;
*a = *b;
*b=c; /*обменместами */
}
Функция izm получает копию адресов переменных a и b, меняет местами значения, записанные по этим адресам, и передает управление в основную программу. Адреса &a и &b в основной программе не изменялись, а вот значения, на которые они указывают, поменялись местами.
Если в качестве аргумента функции используется имя массива, то ей передается адрес начала массива, а сами элементы не копируются. Функция может изменять элементы массива, сдвигаясь (индексированием) от его начала.
Пример 4. В массиве S поменять местами элементы: первый со вторым, третий с четвертым и т.д. Оформить этот алгоритм в виде функции reverse.
#include <stdio.h>
main()
{int i,j,s[6]; /* описание переменных i,j и массива s целого типа */
for (i=0; i<6; i++)
scanf("%d",&s[i]); /*вводэлементовмассива s*/
reverse(s); /*обращениекфункции reverse*/
for (i=0; i<6; i++)
printf("%d",s[i]); /*вывод полученного массива */
}
include "reverse.c" /*включениефайла reverse.c сфункцией reverse */
/*функция*/
reverse(s)
int s[]; /*описание работающего в подпрограмме массива */
{
int a,i;
for (i=1; i<5; i+=2)
{a=s[i]; s[i]=s[i+1]; s[i+1]=a;} /*обменэлементовместами*/