Rückgabetyp
Der Rückgabetyp einer Funktion legt die Größe und den Typ des Werts, der von der Funktion zurückgegeben wird und entspricht dem Typspezifizierer in der folgenden Syntax:
Syntax
Funktionsdefinition:
Spezifizierer deklariertoptATTRIBUTE-folgendeoptDeklarator Deklaration ListeoptVerbundanweisungATTRIBUTE-folgendes /* */Microsoft-spezifische ist
Spezifizierer deklariert:
Speicherklassenspezifizierer Deklaration Bezeichner optTypspezifizierer Deklaration Bezeichner opt
Spezifizierer Deklaration Qualifizierer TYPE opt
Typspezifizierer:
voidchar
short
int
long
float
double
mit Vorzeichen
unsigned
Bezeichner Struktur-oder-UNION
Spezifizierer Enumeration
TypedefNAME
Der Typspezifizierer kann eine beliebige Basis, Struktur- oder Union-Typ angeben.Wenn Sie keinen Typspezifizierereinfügen, wird der Rückgabetyp int angenommen.
Der Rückgabetyp, der in der Funktionsdefinition angegeben ist, muss der Rückgabetyp in die Deklarationen der Funktion an anderer Stelle im Programm entsprechen.Eine Funktion gibt einen Wert zurück, wenn eine return-Anweisung, die einen Ausdruck enthält, ausgeführt wird.Der Ausdruck wird ausgewertet zu der Stelle, konvertiert in den Rückgabewerttyp und ggf. zurückgegeben, an denen die Funktion aufgerufen wurde.Wenn eine Funktion mit Rückgabetyp deklariert voidgeneriert, die eine Return-Anweisung einen Ausdruck enthält, wird eine Warnung angezeigt, und der Ausdruck nicht ausgewertet.
Die folgenden Beispiele veranschaulichen Rückgabewerte Funktion.
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 );
}
Dieses Beispiel definiert den STUDENT-Typ mit einer typedef Deklaration und definiert die Funktion sortstu , um STUDENT Rückgabetyp verfügen.Die Funktion wählt aus und gibt eines seiner Argumente mit zwei Strukturen zurück.Bei nachfolgenden Aufrufe der Funktion sind die Compiler überprüft, ob der Argumenttypen zu vergewissern STUDENT.
Hinweis |
---|
Effizienz wird erhöht, indem Zeiger auf die Struktur, statt die gesamte Struktur erfolgreich war. |
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 );
}
In diesem Beispiel wird eine Funktion, die einen Zeiger auf ein Array von Zeichen zurück.Die Funktion akzeptiert zwei Zeichenfolgen) (Zeichenarrays als Argumente und gibt einen Zeiger auf den kürzeren der beiden Zeichenfolgen zurück.Ein Zeiger auf ein Array von zeigt auf den ersten und den Typ der Arrayelemente. Daher ist der Rückgabetyp der Funktion ein Zeiger, um chareinzugeben.
Sie müssen nicht Funktionen mit int Rückgabetyp deklariert werden, bevor Sie sie aufrufen, obwohl Prototypen empfohlen werden, damit eine ordnungsgemäße Typüberprüfung für Argumente und Rückgabewerte aktiviert ist.