Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Возвращаемый тип функции устанавливает размер и тип значения, возвращаемого функцией. Он соответствует разделу type-specifier синтаксиса:
Синтаксис
function-definition:
declaration-specifiers
необ.attribute-seqнеоб.declaratordeclaration-listнеоб.compound-statement
/*
attribute-seq используется только в системах Майкрософт */
declaration-specifiers:
storage-class-specifier
declaration-specifiers
необ.
type-specifier
declaration-specifiers
необ.
type-qualifier
declaration-specifiers
необ.
type-specifier:
void
char
short
int
__int8 /* Только для систем Майкрософт */
__int16 /* Только для систем Майкрософт */
__int32 /* Только для систем Майкрософт */
__int64 /* Только для систем Майкрософт */
long
long long
float
double
long double
signed
unsigned
struct-or-union-specifier
enum-specifier
typedef-name
Можно type-specifier указать любой фундаментальный, структуру или тип объединения.
Тип возвращаемого значения, указанный в определении функции, должен соответствовать возвращаемому типу в объявлениях функций в любом другом месте программы. Функция возвращает значение при выполнении оператора return, содержащего выражение. Выражение вычисляется, преобразуется в тип возвращаемого значения (при необходимости) и осуществляется возврат в точку, где была вызвана функция. Если функция объявлена с типом возвращаемого значения void, оператор return, содержащий выражение, создает предупреждение, и выражение не вычисляется.
В приведенных ниже примерах показываются возвращаемые значения функции.
typedef struct
{
char name[20];
int id;
long class;
} STUDENT;
/* Return type is STUDENT: */
STUDENT sortstu( STUDENT a, STUDENT b )
{
return ( (a.id < b.id) ? a : b );
}
В этом примере определяются тип STUDENT с помощью объявления typedef, а также функция sortstu, чтобы иметь возвращаемый тип STUDENT. Функция выбирает и возвращает один из двух своих аргументов структуры. В последующих вызовах этой функции компилятор проверяет, что аргументы имеют тип STUDENT.
Примечание.
Эффективность можно увеличить путем передачи указателей на конкретную структуру, а не на всю структуру.
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 );
}
В этом примере определяется функция, возвращающая указатель на массив символов. Функция принимает в качестве аргументов две строки (два массива) символов и возвращает указатель на более короткую из них. Указатель на массив указывает на первый из элементов массива и имеет его тип; таким образом, возвращаемый тип функции — указатель на тип char.
Объявлять функции с возвращаемым типом int перед их вызовом не требуется, хотя рекомендуется использовать прототипы, чтобы для аргументов и возвращаемых значений включалась правильная проверка типа.