A quoi sert le return ?

Bonsoir, j'ai une question : à quoi sert le return dans une fonction en C ?

Si je l’enlève etc... ça change rien au comportement du programme. J'ai regardé sur Google on me dit que ça veut dire "renvoyer" mais je sait même pas ce que 'renvoyer' veut dire. Quelqu'un pour m'expliquer ?

PS : Désolé si c'est une question complètement débile.

2 réponses

  1. Contributeur
    Salut Maxence,

    Le cas mentionné par KX est celui d'une fonction autre que la fonction principale
    main
    , c'est à dire une fonction appelée par
    main
    directement ou indirectement, où le programmeur qui conçoit une telle fonction décide de son prototype et si elle renvoie ou non quelque chose en fonction de l'usage qu'il veut en faire.

    Si la fonction ne renvoie rien, elle est de type
    void
    comme le dit KX, et le
    return
    pour terminer la fonction avant l'accolade fermante est facultatif. Il peut être utilisé par contre pour terminer la fonction prématurément avant la fin et revenir à la fonction appelante. S'il est utilisé dans une fonction void, bien sûr on l'utilisera sous la forme simple
    return;
    . Dans ce cas
    return;
    ne retourne rien et signifiera seulement : retourner (revenir) à la fonction appelante.

    Le cas de la fonction
    main
    est particulier et la norme définissant le langage C impose d'utiliser l'un des prototypes suivants :

    int main(void);

    ou

    int main(int argc, char **argv);

    Si tu veux faire un programme portable, ton programme devrait comporter pour la fonction
    main
    une ou plusieurs instructions
    return
    avec un entier.

    Dans ce cas, l'instruction
    return
    signifie terminer le programme en rendant le contrôle à l'environnement hôte d'exécution du programme et l'entier sert à lui communiquer le statut de l'exécution du programme qu'il a lancé.

    - s'il est suivi de zéro ou de
    EXIT_SUCCESS
    , le programme se termine en indiquant à l'environnement hôte d'exécution qu'il a "réussi",
    - et si la valeur retournée est
    EXIT_FAILURE
    , le programme se termine en indiquant à l'environnement hôte d'exécution qu'il n'a "pas réussi".

    Ainsi, un programme C minimal portable conforme à la norme du C89 qui ne fait rien d'autre que s'exécuter et se terminer serait :

    int main(void) {
        return 0;
    }

    Ce que l'environnement hôte d'exécution fait du code de statut dépend de son implémentation et n'est pas défini par le langage C.

    Un programmeur peut décider d'utiliser les codes de statut pour renseigner les programmes qui l'appellent sur le résultat de son exécution, éventuellement avec des codes additionnels. Il documente alors en général son programme, et indiquer dans la documentation de celui-ci la signification des différents codes de statut qu'il a décidé d'utiliser en plus de
    EXIT_SUCCESS
    ou
    EXIT_FAILURE
    .

    Par exemple, sous GNU Linux, la commande
    grep
    , qui sert à rechercher la présence d'une chaîne de caractères dans une ligne d'un ou plusieurs fichiers, retourne 0 si les lignes recherchées ont été trouvées, 1 si aucune ligne n'a été trouvée, et 2 si une erreur s'est produite à l'exécution.

    https://linux.die.net/man/1/grep

    Note que dans la révision C99 de la norme, tu peux te contenter de

    int main(void) {
    }

    car cette révision de la norme prévoit, dans le cas de
    main
    , un retour implicite avec une valeur de 0 lorsque l'exécution atteint l'accolade fermante du
    main
    .

    Dal