반환 형식Return Type

함수의 반환 형식은 함수에 의해 반환된 값의 크기와 형식을 설정하며, 아래 구문에 나타난 type-specifier에 대응됩니다.The return type of a function establishes the size and type of the value returned by the function and corresponds to the type-specifier in the syntax below:

구문Syntax

function-definition:function-definition:
declaration-specifiers optattribute-seq optdeclarator declaration-list optcompound-statementdeclaration-specifiers optattribute-seq optdeclarator declaration-list optcompound-statement

/* attribute-seq는 Microsoft 전용임 //* *attribute-seq is Microsoft Specific */

declaration-specifiers:declaration-specifiers:
storage-class-specifier declaration-specifiers optstorage-class-specifier declaration-specifiers opt

type-specifier declaration-specifiers opttype-specifier declaration-specifiers opt

type-qualifier declaration-specifiers opttype-qualifier declaration-specifiers opt

type-specifier:type-specifier:
voidvoid

charchar

shortshort

intint

longlong

floatfloat

doubledouble

signedsigned

unsignedunsigned

struct-or-union-specifierstruct-or-union-specifier

enum-specifierenum-specifier

typedef-nametypedef-name

type-specifier는 모든 기본, 구조체 또는 공용 구조체 형식을 지정할 수 있습니다.The type-specifier can specify any fundamental, structure, or union type. type-specifier를 포함하지 않는 경우 반환 형식은 int로 간주됩니다.If you do not include type-specifier, the return type int is assumed.

함수 정의에 지정된 반환 형식은 프로그램의 다른 곳에서 선언된 함수의 반환 형식과 일치해야 합니다.The return type given in the function definition must match the return type in declarations of the function elsewhere in the program. 함수는 식을 포함하는 return 문이 실행될 때 값을 반환합니다.A function returns a value when a return statement containing an expression is executed. 식이 계산되고 반환 값 형식으로 변환되고(필요한 경우) 함수가 호출된 지점으로 돌아갑니다.The expression is evaluated, converted to the return value type if necessary, and returned to the point at which the function was called. 함수가 반환 형식 void로 선언되는 경우 식이 포함된 Return 문은 경고를 발생시키고 식은 계산되지 않습니다.If a function is declared with return type void, a return statement containing an expression generates a warning and the expression is not evaluated.

다음 예제에서는 함수 반환 값을 보여 줍니다.The following examples illustrate function return values.

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 반환 형식을 가지도록 정의합니다.This example defines the STUDENT type with a typedef declaration and defines the function sortstu to have STUDENT return type. 함수는 해당 구조체 인수 둘 중 하나를 선택하고 반환합니다.The function selects and returns one of its two structure arguments. 함수에 대한 후속 호출에서 컴파일러는 인수 형식이 STUDENT인지 확인합니다.In subsequent calls to the function, the compiler checks to make sure the argument types are STUDENT.

참고

전체 구조체가 아니라 포인터를 구조체에 전달하면 효율성을 향상시킬 수 있습니다.Efficiency would be enhanced by passing pointers to the structure, rather than the entire structure.

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 );  
}  

이 예제에서는 문자 배열에 대한 포인터를 반환하는 함수를 정의합니다.This example defines a function returning a pointer to an array of characters. 함수는 두 문자 배열(문자열)을 인수로 사용하고 두 문자열 중 짧은 문자열에 대한 포인터를 반환합니다.The function takes two character arrays (strings) as arguments and returns a pointer to the shorter of the two strings. 배열에 대한 포인터는 배열 요소의 처음을 가리키고 해당 형식을 갖고 있으므로 함수의 반환 형식은 char 형식에 대한 포인터입니다.A pointer to an array points to the first of the array elements and has its type; thus, the return type of the function is a pointer to type char.

인수 및 반환 값에 대한 올바른 형식 검사를 사용할 수 있도록 프로토타입을 권장하지만, 이를 호출하기 전에 int 반환 형식의 함수를 선언할 필요가 없습니다.You need not declare functions with int return type before you call them, although prototypes are recommended so that correct type checking for arguments and return values is enabled.

참고 항목See Also

C 함수 정의C Function Definitions