Zwracany typ
Zwracany typ funkcji ustala rozmiar i typ wartości zwróconej przez funkcję i odpowiada specyfikatora typu w poniższej składni:
Składnia
Definicja funkcji:
Specyfikatory deklaracji optseq atrybutu optlisty deklaracji; niewłaściwy deklarator optmieszanek oświadczenie/ * seq atrybutu jest programu Microsoft * /
Specyfikatory deklaracji:
Specyfikator klasy magazynowania deklaracji Specyfikatory optDeklaracja Specyfikatory specyfikatora typu opt
Typ kwalifikatora deklaracji Specyfikatory opt
Specyfikator typu:
nieważneCHAR
krótkie
int
długie
Pływak
podwójne
podpisane
niepodpisane
Specyfikator struct lub Unii
Specyfikator Enum
Nazwa elementu TypeDef
Specyfikatora typu można określić wszelkie podstawowych struktura lub typ Unii.Jeśli nie zawierają specyfikatora typu, zwracany typ int zakłada, że.
Zwracany typ podane w definicji funkcji musi odpowiadać typowi zwrotu w deklaracji funkcji, gdzie indziej w programie.Funkcja zwraca wartość po return jest wykonywana instrukcja zawierający wyrażenie.Wyrażenie jest sprawdzane są konwertowane na typ zwracanej wartości, jeśli konieczne i zwrócone do punktu, w którym funkcja została wywołana.Jeżeli zadeklarowano funkcję z typem zwracanym void, instrukcja return zawierający wyrażenie generuje ostrzeżenie i nie jest obliczane wyrażenie.
Poniższe przykłady ilustrują wartości zwracane funkcji.
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 );
}
W tym przykładzie definiuje STUDENT typu z typedef deklaracji i definiuje funkcję sortstu mają STUDENT zwraca typ.Funkcja wybiera i zwraca jeden z jej struktury dwa argumenty.W kolejnych wywołaniach funkcji kompilator sprawdza, aby upewnić się, czy typy argumentów są STUDENT.
[!UWAGA]
Efektywności, zostałoby pogłębione poprzez przekazanie wskaźniki do struktury, a nie całą strukturę.
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 );
}
W tym przykładzie definiuje funkcję powrotu 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 pierwszy elementów tablicy i jej typ; w ten sposób, zwracany typ funkcji jest wskaźnik do wpisz char.
Nie należy zadeklarować funkcji z int zwraca typ, zanim zadzwonisz do nich, mimo że prototypy zaleca się tak, że poprawny typ sprawdzania argumenty i zwracane wartości jest włączona.