Udostępnij za pośrednictwem


Zwracany typ

Typ zwracany przez funkcję określa rozmiar i typ wartości zwracanej przez funkcję i odpowiada specyfikatorowi typu w składni poniżej:

Składnia

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

    /* attribute-seq jest specyficzny dla firmy Microsoft * /

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

    type-specifier declaration-specifiers opt

    type-qualifier declaration-specifiers opt

  • specyfikator-typu :
    pusty

    char

    short

    int

    long

    typ float

    double

    oznaczony

    nieoznaczony

    struct-or-union-specifier

    enum-specifier

    typedef-name

type-specifier może określić dowolny typ podstawowy strukturę lub unię.Jeżeli nie dołączono type-specifier, zakłada się, że zwracany typ to int.

Zwracany typ podany w definicji funkcji musi odpowiadać typowi zwracanemu w deklaracji funkcji gdziekolwiek w programie.Funkcja zwraca wartość gdy wyrażenie return zawierające wyrażenie jest wykonywane.Wyrażenie jest oceniane, w razie potrzeby konwertowane na typ zwracanej wartości, a następnie zwracane do punktu, w którym wywołano funkcję.Jeśli funkcja została zadeklarowana z typem zwracanym void, instrukcja zawierająca wyrażenie generuje ostrzeżenie i wyrażenie nie jest wykonywane.

Poniższe przykłady ilustrują funkcje zwracające wartości.

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

Ten przykład definiuje typ STUDENT z deklaracją typedef i definiuje funkcję sortstu zwracającą typ STUDENT.Funkcja wybiera i zwraca jeden z jej dwóch argumentów strukturalnych.W kolejnych wywołaniach funkcji kompilator sprawdza czy typy argumentów to STUDENT.

[!UWAGA]

Wydajność, zostałaby ulepszona poprzez przekazywanie wskaźników do struktury, a nie całej struktury.

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

Ten przykład definiuje funkcję zwracającą wskaźnik do tablicy znaków.Funkcja przyjmuje dwie tablice znaków (ciągi) jako argumenty i zwraca wskaźnik do krótszego z dwóch ciągów.Wskaźnik do tablicy wskazuje na pierwszy element tablicy i ma jego typ; w efekcie zwracany typ funkcji to wskaźnik na typ char.

Nie trzeba deklarować funkcji, która zwraca int przed jej wywołaniem, chociaż zaleca się tworzenie prototypów dlatego, że zostanie włączona wtedy kontrola typów dla argumentów i wartości zwracanej.

Zobacz też

Informacje

Definicje funkcji języka C