Partilhar via


Tipo de retorno

O tipo de retorno de uma função estabelece o tamanho e o tipo do valor retornado pela função e corresponde ao elemento type-specifier na sintaxe abaixo:

Sintaxe

  • function-definition:
    declaration-specifiers opt attribute-seq opt declarator declaration-list opt compound-statement

    /* attribute-seq é específico da Microsoft */

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

    type-specifier declaration-specifiers opt

    type-qualifier declaration-specifiers opt

  • type-specifier:
    void

    char

    short

    int

    long

    float

    double

    signed

    sem sinal

    struct-or-union-specifier

    enum-specifier

    typedef-name

O elemento type-specifier pode especificar qualquer tipo fundamental, de estrutura ou união. Se você não inclui type-specifier, o tipo de retorno int será presumido.

O tipo de retorno especificado na definição de função deve corresponder ao tipo de retorno em declarações da função em outros lugares no programa. Uma função retorna um valor quando uma instrução return que contém uma expressão é executada. A expressão é avaliada, convertida no tipo de valor de retorno, se necessário, e retornada ao ponto em que a função foi chamada. Se uma função é declarada com o tipo de retorno void, uma instrução return que contém uma expressão gera um aviso e a expressão não é avaliada.

Os exemplos a seguir ilustram valores de retorno da função.

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

Este exemplo define o tipo STUDENT com uma declaração typedef e define a função sortstu para ter o tipo de retorno STUDENT. A função seleciona e retorna um de seus dois argumentos de estrutura. Em chamadas subsequentes à função, o compilador verifica se os tipos de argumento são STUDENT.

Dica

A eficiência seria aprimorada passando ponteiros para a estrutura, em vez da estrutura inteira.

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

O exemplo define uma função que retorna um ponteiro para uma matriz de caracteres. A função usa duas matrizes de caracteres (cadeias de caracteres) como argumentos e retorna um ponteiro para a mais curta das duas cadeias de caracteres. Um ponteiro para os pontos de uma matriz para o primeiro dos elementos da matriz e tem seu tipo; assim, o tipo de retorno da função é um ponteiro para o tipo char.

Você não precisa declarar funções com o tipo de retorno int antes de chamá-las, embora protótipos sejam recomendados de forma que a verificação de tipo correto de argumentos e valores de retorno seja habilitada.

Consulte também

Referência

Definições de função C