En langage C, étendue de la variable static
dans le fichier. Dans le code suivant, la fonction retourne la variable statique.
int fun(){ static int i = 10; return i; } int main() { printf("%d\n", fun()); return 0; }
Et sortie imprimée 10.
Donc, est-ce que retourner un comportement statique local en C non défini ou bien défini?
Vous semblez avoir manqué toute la logique d’une déclaration de return
.
En fait, dans cet extrait de code, vous retournez la valeur (de la variable). Par conséquent, sans le stockage static
, le code est correct.
Si vous souhaitez renvoyer l’ adresse d’une variable, celle-ci doit durer plus longtemps que la scope de la fonction. Dans ce cas, vous devez disposer d’une variable avec stockage static
, de sorte que l’adresse renvoyée soit valide (afin qu’elle puisse être utilisée de manière significative à partir de la fonction appelant), même en dehors de la fonction dans laquelle elle est définie. Donc soit
malloc()
ou family static
classe de stockage static
.