Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zwracany typ funkcji określa rozmiar i typ wartości zwracanej przez funkcję. Odpowiada on sekcji type-specifier
Składnia:
Składnia
function-definition
:
declaration-specifiers
opt opt attribute-seq
declarator
declaration-list
compound-statement
/* attribute-seq
jest specyficzny dla firmy Microsoft */
declaration-specifiers
:
storage-class-specifier
declaration-specifiers
Zdecydować
type-specifier
declaration-specifiers
Zdecydować
type-qualifier
declaration-specifiers
Zdecydować
type-specifier
:
void
char
short
int
__int8
/* Specyficzne dla firmy Microsoft */
__int16
/* Specyficzne dla firmy Microsoft */
__int32
/* Specyficzne dla firmy Microsoft */
__int64
/* Specyficzne dla firmy Microsoft */
long
long long
float
double
long double
signed
unsigned
struct-or-union-specifier
enum-specifier
typedef-name
Element type-specifier
może określać dowolny typ podstawowy, struktury lub unii.
Zwracany typ podany w definicji funkcji musi odpowiadać typowi zwracanemu w deklaracjach funkcji w innym miejscu w programie. Funkcja zwraca wartość, gdy return
jest wykonywana instrukcja zawierająca wyrażenie. Wyrażenie jest obliczane, konwertowane na zwracany typ wartości w razie potrzeby i zwracane do punktu, w którym została wywołana funkcja. Jeśli funkcja jest zadeklarowana z typem void
zwracanym , instrukcja return zawierająca wyrażenie generuje ostrzeżenie, a wyrażenie nie jest oceniane.
W poniższych przykładach przedstawiono zwracane wartości 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 zdefiniowano STUDENT
typ z deklaracją typedef
i zdefiniowano funkcję sortstu
, która ma zwracać STUDENT
typ. Funkcja wybiera i zwraca jeden z dwóch argumentów struktury. W kolejnych wywołaniach funkcji kompilator sprawdza, czy typy argumentów to STUDENT
.
Uwaga
Wydajność byłaby zwiększona przez przekazanie 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 );
}
W tym przykładzie zdefiniowano 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 pierwszy z elementów tablicy i ma jego typ; w związku z tym zwracany typ funkcji jest wskaźnikiem do typu char
.
Nie trzeba deklarować funkcji z int
typem zwrotnym przed ich wywołaniem, chociaż zalecane są prototypy, aby poprawne sprawdzanie typów argumentów i zwracanych wartości było włączone.