Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТРПП. ЛЕКЦИИ! Готовимся к экзамену))).docx
Скачиваний:
12
Добавлен:
10.12.2018
Размер:
175.63 Кб
Скачать

1.5.3. Функция main

С точки зрения функций, main тоже является функцией. Main переводится как главная. Возможны два варианта блока main.

Вариант 1

main ()

{ ...

return 0;

}

Блок main возвращает значение целого типа int.

Вариант 2

void main ()

{ ...

}

1.5.4. Вызов функции

Функция начинает выполняться в момент вызова.

Для вызова функции указывается ее имя, за которым в круглых скобках через запятую перечисляются имена передаваемых параметров.

При вызове функции выполняются все операторы из тела функции до конца (оператора return). Затем происходит возврат в главную функцию.

Пример 6

Программа, содержащая функцию, которая возвращает сумму двух целых величин.

#include <iostream.h>

int sum (int a, int b) // определение функции sum

{

return (a+b); // тело функции

}

int main()

{

int a=2, b=3, c, d;

c=sum(a,b); // вызов функции sum

cin>>d;

cout<<sum(c,d); // вызов функции sum

return 0;

}

В объявлении, определении и вызове одной и той же функции типы и порядок следования параметров должны совпадать.

1.5.5. Способы передачи данных

Механизм параметров является основным способом обмена информацией между вызываемой и вызывающей функциями.

Параметры, перечисленные в заголовке описания функции, называются формальными параметрами (или просто параметрами).

Параметры, записанные в операторе вызова функции, называются фактическими параметрами (или аргументами).

Существует два способа передачи параметров в функцию: по значению (копирование) и по адресу.

1 способ. При передаче по значению в принимающую функцию передается не сама переменная-параметр, а только ее значение – копия. Это уже не одна переменная, а, фактически, две. Первая является локальной по отношению к главной функции, а вторая локальной по отношению к принимающей функции. Если эти переменные имеют одно и тоже имя, конфликта не возникает, т.к. они локальны. При изменении переменной в принимающей функции значение в вызывающей (главной) функции не изменяется.

Пример 7 (передача параметров по значению)

f (int i, int j)

{

i=6; j=16;

cout<<"\n i="<< i<<"\n j="<< j;

return 0;

}

main ()

{

int i=5, j=15;

f (i,j); // вызов функции f ; выводятся i=6, j=16

return 0;

}

В результате выполнения программы в переменных i и j окажутся значения 5 и 15.

2 способ. При передаче параметров по адресу (или ссылке) в принимающую функцию передается адрес переменной-параметра. Поэтому принимающая функция получает доступ к ячейке памяти по этому адресу и может изменить исходное значение аргумента. Измененное значение сохраняется и после выхода из функции.

Пример 8 (передача параметров по адресу)

.....

f (int *ai, int *aj) // функция f получает два адреса переменных типа int: ai, aj

{

*ai=6; // по адресу ai записывается значение 6

*aj=16; // по адресу aj записывается значение 16

cout<<"\n Функция с i="<<*ia<<" \n j"<<*aj;

return 0;

}

void main()

{

int i=5, j=4;

cout<<"\nДо вызова функции i="<< i<<" \nj="<< j;

f (&i, &j); // операция &i позволяет определить адрес переменной i,

// &j – адрес переменной j

cout<<"\n После вызова функции i="<< i<<" \nj="<< j;

}

В результате выполнения программы в переменных i и j окажутся значения 6 и 16.