Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
EKZAMEN_PO_INFORMATIKE_TEORIYa_1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
260.1 Кб
Скачать

16)Способы обмена данными между функциями. Глобальные переменные. Возвращаемое значение. Параметры функции. Передача массивов в качестве параметров. Параметры со значениями по умолчанию.

Способы взаимодействия функций:

- через глобальные переменные

- через возвращаемое значение

Механизм возврата из функции в вызывающую ее функцию реализуется оператором: return [выражение];

- через параметры функции

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

Фактические параметры – указанные при вызове функции.

При вызове:

а) вычисляются выражения стоящие на месте аргументов

б) выделяется память под формальные параметры и каждому присваивается значение соответствующего аргумента.

3 способа передачи параметра:

- по значению (функция получает копию значения аргументов)

- по адресу (функции передаются копии адресов аргументов)

- по ссылке 9передается адрес указанного при вызове параметра, а внутри функции обращения к параметру неявно разадресовываются)

void func(int i, int *j, int &k)

{cout<<++i<<++(*j)<<++k<<endl;}

void main()

{int a=1, b=2, c=3;

func(a, &b, c);

cout<<a<<b<<c;}

int func(const char*);

Параметры со значениями по умолчанию:

int f1(int a, int b=0);

f1(1,2); f1(100);

void f2( int i, int j=100, char *k=NULL);

f2(10); f2(4,5); f2(4,10,”Vasia”);

17)Рекурсивные функции. Функция main().

-рекурсивной называется функция, которая вызывает саму себя

n!=n*(n-1)!; 0!=1; 1!=1

long func(long n)

{if (n==0 || n==1) return 1;

return (n*func(n-1));}

Функция main():

1) тип main()

2) тип main(int argc, char *argv[])

int argc – количество параметров

char *argv[] – текстовое описание параметров

тип – void или int

18)Перегрузка функций.

Перегрузка функций - использование нескольких функций с одним и тем же именем, но с различными параметрами.

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

Если точного соответствия аргументов и параметров перегруженной функции не найдено:

1) производится попытка преобразования коротких типов в более длинные в соответствии с общими правилами (bool, char=>int; float=>double)

2) выполняется стандартное преобразование типов (int=>double, указатели=>void)

3) преобразование типов заданное пользователем

Неоднозначность может появиться:

- при преобразовании типов аргументов

- при использовании параметров-ссылок

- при использовании параметров со значениями по умолчанию

19)Шаблоны функции.

Шаблон – средство параметризации.

С помощью шаблонов функции можно определить алгоритм, который будет применяться к данным различных типов, а конкретный тип данных передается функции в виде параметра на этапе компиляции.

формат:

teamplate <class Type> заголовок функции {тело функции}

Сортировка методом выбора:

template <class T> void sort(T *b, int n)

{for(int i=0; i<n-1; i++)

{int min=i;

for(int j=i+; j<n; j++)

{if(b[j]<b[min]) min=j;}

T a=b[i];

b[i]=b[min];

}

}

Вызов шаблона:

const int n=20;

int b[n];

sort (b, n);

……..

double a[5];

sort(a, 5);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]