Назад | Оглавление | Далее |
Синтаксис задания типа возвращаемого значения функции описан в разделе 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) и возвращает указатель на более короткую из строк.
Назад | Оглавление | Далее |