Retour String à partir d'une fonction C

Retour String à partir d'une fonction C

UN chaîne est une séquence de caractères qui se compose d'un seul caractère ou de plusieurs caractères et est une structure de données importante dans la programmation informatique. Lorsque vous travaillez avec cordes En C, certaines opérations doivent être effectuées sur le chaîne Type de données telles que l'initialisation du chaîne, attribuer du contenu, concaténer le cordes, comparant cordes, et retourner le chaîne.

Cet article se concentre sur une telle opération dans le chaîne Structure de données, qui renvoie un chaîne à partir d'une fonction C.

Retour String à partir d'une fonction C

Comme chaîne est un tableau de caractères et pour retourner la chaîne d'une fonction C, un pointeur vers la structure de données de chaîne doit être passé comme un argument de la fonction d'appel à la fonction appelée comme paramètre. Le pointeur peut ensuite être utilisé pour pointer un tableau de caractères. Une fois que le pointeur pointe vers un tableau de personnages, le chaîne la valeur peut être renvoyée de la fonction appelée à l'aide de l'instruction de retour.

Vous pouvez consulter l'exemple ci-dessous pour une meilleure compréhension.

#inclure
const char * myname ()
retourner "John";

int main (void)
printf ("% s", myname ());

Dans le code ci-dessus, au lieu de déclarer la variable comme nous le faisons normalement, nous avons utilisé un pointeur avec lui afin que lorsque nous retournons cette chaîne, aucune erreur ne se produit.

Sortir


Une fonction C ne peut pas renvoyer un chaîne Cela a été spécifié en tant que variable locale car la variable sera immédiatement supprimée (libérée) lorsque la fonction a terminé l'exécution, le rendant indisponible et déclenche un avertissement comme ci-dessous:

#inclure
const char myname ()
name char = "John";
nom de retour;

int main (void)
printf ("% s", myname ());

Dans ce code, un avertissement est déclenché comme la chaîne est retournée sans Tout pointeur.

Sortir


Ainsi, vous pouvez écrire le code de la manière suivante:

#inclure
const char * myname ()
char * name = "John";
nom de retour;

int main (void)
printf ("% s", myname ());

Sortir


Les variables sont allouées sur la pile par défaut, ce qui est la raison réelle de l'instruction ci-dessus. Cependant, lorsqu'un pointeur est déclaré, la valeur dont il pointe est alloué sur le tas, qui n'est pas effacée après la fin de la fonction. Une fois la mémoire allouée, une copie du chaîne doit être créé à partir de l'emplacement de la mémoire d'origine pointé par le pointeur et la copie doit être renvoyée à partir de la fonction appelée. La fonction d'appel aura alors un contrôle sur les données de chaîne d'origine, tandis que la fonction appelée est responsable de la libération de l'espace alloué.

Conclusion

Une fonction C peut prendre un pointeur pour chaîne comme argument et retourne le chaîne valeur à la suite des opérations effectuées dans la fonction appelée. L'approche pour y parvenir consiste à utiliser un pointeur de char *. La fonction d'appel sera responsable de la mémoire allouée pour stocker le chaîne, tandis que la fonction appelée est responsable de la libération de l'espace alloué.