Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Климов. Лекции / Алг_яз_Лекция_32.pptx
Скачиваний:
24
Добавлен:
14.05.2015
Размер:
983.91 Кб
Скачать

Функцию можно определить как встроенную с помощью модификатора inline.

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

11

ОБЪЯВЛЕНИЕ И ОПРЕДЕЛЕНИЕ ФУНКЦИЙ.

Директива inline носит рекомендательный характер и выполняется компилятором по мере возможности.

Использование inline­функций может увеличить объем исполняемой программы.

Определение inline­функции должно предшествовать ее вызовам

иначе вместо inline­расширения компилятор сгенерирует обычный вызов.

12

#include <iostream.h>

 

int sum(int a, int b);

// объявление функции

int main(){

 

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

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

cin >> d;

 

cout << sum(c, d);

// вызов функции

return 0;

 

}

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

}

Пример функции, возвращающей сумму двух целых величин 13

#include <iostream.h>

 

struct Worker{

 

char fio[30];

 

int date, code;

 

double salary;

 

};

 

void print_worker(Worker);

//объявление функции

int main(){

 

Worker staff[100];

 

. . .

/* формирование массива staff */.

for (int i = 0; i<100; i++)print_worker(staff[i]);

// вызов функции return 0;

 

}

 

void print_worker(Worker w){

//определение функции

cout << w.fio << ' ' << w.date << ' ' << w.code << ' ' << w.salary << endl;

}

Пример функции, выводящей на экран поля переданной ей структуры 14

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

Если этого требуется избежать, при объявлении локальных переменных используется модификатор static.

15

#include <iostream.h> void f(int a){

int m = 0;

cout << "n m p\n"; while (a--){

static int n = 0; int p = 0;

cout << n++ << ' ' << m++ << ' ' << p++ <<

'\n';

}

}

int main(){ f(3); f(2); return 0;}

Программа выведет на экран:

n

m

p

0

0

0

1

1

0

2

2

0

n

m

p

3

0

0

4

1

0

Модификатор static

16

Механизм возврата из функции в вызвавшую ее функцию реализуется оператором

return [ выражение ];

17

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ.

Функция может содержать несколько операторов return.

Если функция описана как void, выражение после return не указывается.

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

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

18

Примеры:

int fl(){return 1;} void f2(){return 1;}

//правильно

//неправильно,

/* f2 не должна возвращать значение */

double f3(){return 1;} // правильно,

/* 1 преобразуется к типу double */

Нельзя возвращать из функции указатель на локальную переменную

int* f(){ int a = 5; return &a; // нельзя!

}

память, выделенная локальным переменным при входе в функцию,

освобождается после возврата из нее

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

19

Параметры

функции

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

Соседние файлы в папке Климов. Лекции