Pourquoi pensez-vous que c'est impossible? Il semble que vous le confondiez avec la règle concernant le fait de ne pas renvoyer des adresses à des variables locales aux fonctions appelantes. Vous ne pouvez pas le faire car les variables locales à une fonction ont une durée de vie uniquement pour la durée de cet appel de fonction; une fois que la fonction se termine, ces variables deviennent des déchets.
Il y a des choses qui ont des durées de vie qui s'étendent au-delà de la durée de vie de l'appel de fonction; il est acceptable de renvoyer des adresses à ces choses. Des exemples de ces choses sont des blocs de mémoire alloués sur le tas (par exemple avec malloc
) ou des choses qui ont une durée de stockage statique (par exemple des variables globales et des littéraux de chaîne).