Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lekcii_1_10 / Лекция 07.pptx
Скачиваний:
68
Добавлен:
21.05.2015
Размер:
261.93 Кб
Скачать

void f()

{

// ...

switch(с) {

case 'a': return;

case 'b': // ...

case 'c': return;

}

if(count<100) return;

// ...

}

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

х = power(у);

if(max(х, у)) > 100) cout << "больше";

#include <iostream>

#include <cstdlib> using namespace std; int main()

{

int i;

i = abs(-10); // строка 1

cout << abs(-23); // строка 2

abs(100); // строка

return 0;

}

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

#include <iostream> using namespace std

int find_substr(char *sub, char *str); int main()

{

int index;

index = find_substr("три", "один два три четыре");

cout << "Индекс равен " << index; // Индекс равен 9.

return 0;

}

int find_substr(char *sub, char *str)

{

int t;

char *p, *p2;

for(t=0; str[t]; t++) {

p = &str[t]; // установка указателей

p2 = sub;

while(*p2 && *p2==*p) { // проверка

совпадения

p++; p2++;

}

/* Если достигнут конец р2-строки (т.е.

подстроки), то подстрока была найдена. */

if(!*p2) return t; // Возвращаем индекс

подстроки.

}

return -1; // Подстрока не была обнаружена.

}

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

#include <iostream> using namespace std;

void print_vertical(char *str); int main(int argc, char *argv[])

{

if(argc==2) print_vertical(argv[1]);

return 0;

}

void print_vertical(char *str)

{

while(*str)

cout << *str++ << '\n';

}

Поскольку print_vertical()

объявлена как void-функция, ее нельзя использовать в выражении. Например, следующая инструкция неверна и поэтому не скомпилируется.

х = print_vertical("Привет!"); // ошибка

Функции, которые возвращают

указатели

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

#include <iostream> using namespace std;

char *find_substr(char *sub, char *str); int main()

{

char *substr;

substr = find_substr("три", "один два три четыре");

cout << "Найденная подстрока: " << substr;

return 0;

}

Соседние файлы в папке lekcii_1_10