Tipo restituito
Il tipo restituito della funzione a determinare la dimensione e il tipo del valore restituito dalla funzione e corrisponde all'tipo-identificatore nella sintassi di seguito:
Sintassi
definizione di funzione:
dichiarazione-identificatori scegliereattributo-seguente sceglieredichiarazione-elenco del dichiaratore sceglierecomposto-rendiconto/* attributo-seguente è Microsoft specifico */
dichiarazione-identificatori:
dichiarazione-identificatori dell'archiviazione-classe-identificatore sceglieredichiarazione-identificatori dell'tipo-identificatore scegliere
dichiarazione-identificatori di tipo-qualificatore scegliere
identificatore del tipo:
voidchar
short
int
long
float
double
con segno
senza segno
struct-o-unione-identificatore
enum-identificatore
typedef-nome
identificatore del tipo possibile specificare qualsiasi foundation, struttura, o un tipo di unione.Se non si importano identificatore del tipo, il tipo restituito int si presume.
Il tipo restituito fornito nella definizione di funzione deve corrispondere al tipo restituito nelle dichiarazioni di funzione in altre parti del programma.una funzione restituisce un valore quando a return l'istruzione che contiene un'espressione viene eseguito.L'espressione viene valutata, convertita al tipo di valore restituito se necessario e viene restituita al punto in cui la funzione è stata chiamata.se una funzione è dichiarata con tipo restituito void, un'istruzione return che contiene un'espressione genera un avviso e l'espressione non viene valutata.
Negli esempi seguenti vengono illustrati i valori restituiti delle funzioni.
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 );
}
In questo esempio viene definita STUDENT tipo con un oggetto typedef la dichiarazione e definisce la funzione sortstu per disporre STUDENT tipo restituito.La funzione selezionata e restituisce uno dei propri argomenti di due strutture.Nelle successive chiamate alla funzione, il compilatore per verificare i tipi di argomento sono STUDENT.
[!NOTA]
L'efficienza risulta migliorato passaggio di puntatori alla struttura, anziché l'intera struttura.
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 questo esempio viene definita una funzione che restituisce un puntatore a una matrice di caratteri.La funzione accetta due matrici di caratteri (stringhe) come argomenti e restituisce un puntatore a più breve delle due stringhe.Un puntatore agli elementi di una matrice al primo degli elementi di matrice e dispone di tipo; pertanto, il tipo restituito della funzione è un puntatore al tipo char.
Non è necessario dichiarare le funzioni con int tipo restituito prima di chiamare, sebbene i prototipi è consiglino in modo da consentire il controllo di tipo corretto per gli argomenti e valori restituiti.