martram
Messages postés17Date d'inscriptionvendredi 13 octobre 2006StatutMembreDernière intervention 2 décembre 2007
-
31 janv. 2007 à 18:52
martram
Messages postés17Date d'inscriptionvendredi 13 octobre 2006StatutMembreDernière intervention 2 décembre 2007
-
1 févr. 2007 à 00:17
salut
j'aimerais faire un retour de fonction d'une chaine de charactères.. j'aimerais savoir la façon idéal pour le faire.. j'ai vu sur un autre site quelqu'un qui utilisait un pointeur mais se faisait dire que c'était pas une bonne façon
merci
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 31 janv. 2007 à 19:54
L'important, c'est de ne jamais retourner de variable local tout
simplement parce qu'à la sortie de la fonction, elles sont détruites:
char *NePasFaire (void)
{
char VarLocal[256]; // Sera détruit à la fin de la fonction
return VarLocal;
}
Certain te dirons qu'il est aussi possible d'allouer la mémoire
directement dans la fonction et retourné sont pointeur mais ce n'est
pas très recommandé non-plus (sauf pour les fonctions spécifiquements
fait pour ça comme une fonction qui doit calculer certaine chose pour
allouer):
char *PasRecommande(void)
{
char *pointeur = (char*)malloc(256); // Risque d'oublier de libérer la mémoire
// Fait un code malpropre en plus
return pointeur;
}
En gros, l'idéal est d'allouer la mémoire avant la fonction, passer le
pointeur vers la zone mémoire en paramètre de cette même fonction et,
si nécessaire, retourné le pointeur vers cette même zone (comme dans
l'exemple du précédent post) ou retourner un pointeur sur la fin de la
chaine pour permettre un chainage directe. On libère bien sur, si il
s'agit d'allocation dynamique, après l'utilisation de la zone mémoire.