Type de retour
Le type de retour d'une fonction génère la taille et le type de la valeur retournée par la fonction et correspond au spécificateur de type dans la syntaxe ci-dessous :
Syntaxe
définition de fonction:
instructionoptcomposée attribut-seqoptde déclaration-liste des déclarateursoptde déclaration-spécificateurs/* attribut-seq est spécifique de Microsoft *
déclaration-spécificateurs:
déclaration-spécificateurs de stockage-classe-spécificateur optdéclaration-spécificateurs de spécificateur de type opt
déclaration-spécificateurs de type-qualificateur opt
spécificateur de type:
voidchar
short
int
long
float
double
signé
non signé
struct-ou-union-spécificateur
enum-spécificateur
typedef-nom
Le spécificateur de type peut spécifier n'importe quelle fondamental, structure, ou type d'union.Si vous n'incluez pas le spécificateur de type, le type de retour int est utilisé.
Le type de retour donné dans la définition de fonction doit correspondre au type de retour dans les déclarations de la fonction ailleurs dans le programme.Une fonction retourne une valeur lorsqu'une instruction d' return contenant une expression est exécutée.L'expression est évaluée, si nécessaire convertie dans le type de valeur de retour, et retournée au point où la fonction a été appelée.Si une fonction est déclarée avec un type de retour void, une instruction return contenant une expression génère un avertissement et l'expression n'est pas évaluée.
les exemples suivants montrent des valeurs de retour de fonction.
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 );
}
cet exemple définit le type d' STUDENT avec une déclaration d' typedef et définit la fonction sortstu pour avoir le type de retour d' STUDENT .La fonction sélectionne et retourne un de ses arguments de deux structures.Dans les appels suivants à la fonction, les contrôles du compilateur pour vérifier les types d'arguments sont STUDENT.
[!REMARQUE]
L'efficacité est améliorée en passant des pointeurs vers la structure, plutôt que la structure entière.
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 );
}
Cet exemple définit une fonction qui retourne un pointeur vers un tableau de caractères.La fonction prend deux tableaux de caractères (chaînes) comme arguments et retourne un pointeur vers le plus courte des deux chaînes.Un pointeur à des points d'un tableau au premier des éléments de tableau et a son type ; ainsi, le type de retour de la fonction est un pointeur pour taper char.
Vous n'avez pas besoin de déclarer des fonctions avec le type de retour d' int avant de les appeler, bien que les prototypes sont recommandés afin que la vérification de type correcte pour les arguments et les valeurs de retour soit activée.