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

2 Способ:

int f1();

void f2();

int main()

{

int x1, y=5;

int z = f1();

int w=x+y;

f(z,w);

}

f2(f1(),x+y)

3 Пример:

Использование оператора «,» при формировании параметров.

void f (int);

main()

{

int x;

std::cin>>x;

f(x);

}

f (std::cin>>x);

f ((std::cin>>x)*x);

}

Параметры значения

Функции по умолчанию задаются в прототипе функции

void f (char, int, double);

f (‘A’, 2, 3.14);

void f1(char, int, double=1.1);

f1 (‘A’, 2, 3.14);

f1 (‘B’, 3);

Замечание: по умолчанию можно использовать больше одного аргумента, но все они должны располагаться в конце списка аргументов

void f2 (char = ‘C’, int = 4, double = 2.71828);

f2 (‘A’, 1, 3.14);

f2(‘A’, 1);

f2(‘A’);

f2();

Замечание: Опускать значения можно только с конца списка параметров. Поставить запятую вместо пропущенного параметра по умолчанию не допускается. Значения по умолчанию должны быть указаны только при объявлении. Если вы укажите значения по умолчанию при определении (даже те же самые), у компилятора возникнет двойственность и будет ошибка

Параметры функции main

int main (int argc[, char* argv[][char*enpv[]])

argv – число параметров, указываемых в argv

argv – то, что передается компилятором или указывается в командной строке

argv:

a

Имя exe – файла

1 аргумент командной строки

rgv[0]

a rgv[1]

argv[2]

enpv – массив строк, каждая из которых описывает переменную среды.

Количество строк зависит от текущей конфигурации. Признак окончания – NULL в ячейке.

Переменное число параметров

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

Встретив многоточие, компилятор прекращает контроль в соответствии типов параметров при вызове. У функции должен быть хотя бы один параметр. Число параметров вычисляется программистом при каждом вызову.

Объявление:

int func (int i,...); //функция имеет один или более параметров

int func (int i,char ch,…); // не менее двух параметров

Тело функции:

double Average (int first,..);

main ()

{

std :: cout << «Average = » << Average(2, 3, 4, -1);

std :: cout << «Average = » << Average(2, 3, 4,5, -1);

}

double Average (int first,..)

{

int count =0, sum =0;

int *p=&first;

while (*p!=-1)

{

sum *= *p++;

count++;

}

return sum/count;

}

Ответ: 3,3

В озвращаемые значения

Базовые типы данных

(int, void, double, float)

Адрес

Указатель

Ссылка

Пользовательский тип

Структура

Объединение

Класс

Функция может возвращать:

1) один из базовых типов

2) объект агрегатного или пользовательского типа

3) указатель или ссылку

Проблемы при возвращении ссылки или указателя: указывает вникуда.

int * f1 (int n)

{

int nN=n*5;

……..

return &nN;

}// так нельзя делать!!!

Программа запускает функцию. Программа возвращает пустой адрес.

int &f2 (int n)

{

int nN=n*5;

return nN;

}

int main ()

{

int z =f2(3);

z=f2(1)+f2(2)+f(3);

}

Нельзя возвращать адреса локальных объектов.

Возвращать можно:

  1. Указатель или ссылку на объект со статическим временем существования;

  2. Указатель на строковый литерал;

  3. Указатель на динамический объект.