НазадОглавлениеДалее

6.2.3. Типы возвращаемых значений

Синтаксис задания типа возвращаемого значения функции описан в разделе 3.5 "Объявление функции". Функция может возвращать значение любого типа, кроме массива или функции; она может, в частности, возвращать указатель на любой тип, включая массив и функцию.

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

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

Примеры:

/*пример 1*/

/*тип возвращаемого значения int*/

static add(x, у)

int x, у;

return(x+у);

/*пример 2*/

/*тип возвращаемого значения STUDENT*/

typedef struct

{

char name[20];

int id;

long class;

}STUDENT;

STUDENT sortstu(a, b)

STUDENT a, b;

{

return(a.id<b.id ? a : b);

}

/*пример 3*/

/*тип возвращаемого значения - указатель на char*/

char *smallstr(sl, s2)

char sl[], s2[];

{

int i;

i=0;

while (s1[i]!='\0' && s2[i]!='\0')

i++;

if (s1[i]=='\0')

return(s1);

else

return(s2);

}

В первом примере по умолчанию тип возвращаемого значения функции add определен как int. Функция имеет класс памяти static. Это значит, что она может быть вызвана только функциями того же исходного файла, в котором она определена.

Во втором примере посредством объявления typedef создан структурный тип STUDENT. Далее определена функция sortstu с типом возвращаемого значения STUDENT. Функция возвращает тот из своих двух аргументов структурного типа, элемент id которого меньше.

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


НазадОглавлениеДалее