Язык программирования Си для персонального компьютера | страница 102
Тип возвращаемого значения, задаваемый в определении функции, должен соответствовать типу возвращаемого значения во всех объявлениях этой функции, если они имеются в программе. Для вызова функции с типом возвращаемого значения int не требуется ее предварительно объявлять или определять. Функции с другими типами возвращаемого значения должны быть определены или объявлены до того, как они будут вызваны.
Возвращаемое значение функции вырабатывается при выполнении оператора возврата return, содержащего выражение. Выражение вычисляется, преобразуется к типу возвращаемого значения и возвращается в точку вызова функции. Если оператор return отсутствует или не содержит выражения, то возвращаемое значение функции не определено. Если в этом случае вызывающая функция ожидает возвращаемое значение, то поведение программы непредсказуемо.
Примеры:
/* пример 1 */
/* тип возвращаемого значения int */
static add(int х, int у)
{
return (х + у);
}
/* пример 2 */
/* тип возвращаемого значения STUDENT */
typedef struct {
char name [20],
int id;
long class;
} STUDENT;
STUDENT sortstu(STUDENT a, STUDENT b)
{
return (a.id < b.id ? a : b);
}
/* пример 3 */
/* тип возвращаемого значения — указатель на char */
char *smallstr(char *s1, char *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) и возвращает указатель на более короткую из строк.
Формальные параметры
Формальные параметры — это переменные, которые принимают значения, переданные функции при вызове, в соответствии с порядком следования их имен в списке параметров.
Форма объявления формальных параметров аналогична использованию метода прототипов в объявлении функции. Список объявлений параметров содержит объявления формальных параметров через запятую. После списка сразу начинается тело функции (составной оператор). Список может быть и пустым, но и в этом случае он должен быть ограничен круглыми скобками. Если функция не имеет аргументов, рекомендуется указать это явно, записав в списке объявлений параметров ключевое слово