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

4.8.2. Глобальные описания

Константы, типы данных и переменные, описанные вне функций (включая main), считаются глобальными ниже точки описания. Это позволяет использовать их внутри функций в пределах всей программы вследствие того, что они уже описаны и известны во всех функциях ниже точки описания. Если вы переместите описание INFINITY в конец программы, то компилятор выдаст сообщение о том, что им обнаружены две ошибки: одна из них – в get_ratio, а другая – в put_ratio. Причина ошибок – использование неописанного идентификатора.

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

4.8.3. Описание функции void

В С++ существует стандартный тип void, который представляется как разновидность “нулевого” типа. Любая функция, не возвращающая явно какое-либо значение, может быть объявлена как функция типа void. Заметим, что большинство программ, использующих динамическое распределение памяти (например, malloc), описываются как имеющие тип void. Это означает, что они возвращают нетипизированный указатель, значение которого вы затем (в С++) можете присвоить указателю любого типа данных без предварительного преобразования типов (хотя преобразования типов лучше использовать повсеместно, для сохранения совместимости).

4.8.4. Оператор return

Существует два основных способа использования оператора return.

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

int imax(int a, int b);

{

if (a > b) return(a);

else return(b);

}

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

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

Рассмотрим модификацию программы imin, предложенной ранее:

int imin(int list[ ], int size)

{

int i, minindx, min;

if (size <= 0) return (-1);

}

В этом примере, если параметр size меньше либо равен нулю, то массив list пуст, в связи с чем оператор return вызывает выход из функции.

Заметим, что в случае ошибки возвращается значение –1. Т.к. –1 никогда не может быть индексом массива, вызывающая программа регистрирует факт возникновения ошибки.