chaine de caractères en argument de fonction
Bonjour,
J'ai quelques questions à propos du code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| void fct(char **ch){
char *c = "coucou";
*ch = c;
}
int main(){
char *ch = NULL;
fct(&ch);
printf("\nch = %s",ch);
return 0;
} |
la chaine ch pointe sur le même zone mémoire que c, qui est "coucou"..
la question est :
Le fait que c est une variable locale, elle sera détruite à la fin de la fonction, donc pourquoi ch contient t-elle tjs la chaine coucou?
autrement dit, qui est détruit à la fin de la fonction, la zone mémoire pointée par c ou juste le lien (le pointeur c)?
Quel impacts si échange de chaines de cette façon ?
Merci,
zentaf.