« Fais bien attention, dans ce cas tu COPIES ta chaine, c'est a dire que si la chaine en question est declaree dans la fonction A, et que la fonction A appelle la fonction B en lui "donnant" sa chaine, si tu la modifie dans la fonction B, elle ne sera pas modifiee dans la fonction A. »
Enfonçons le clou, parce que ceci est complétement faux !
Démonstration :
chris@totorJr:/tmp$ cat t.c
- include <stdio.h>
void f(char a[256]) {
a[0] = a[1] = a[2] = a[3] = a[4] = 'X';
printf("---> %s\n", a);
}
int main() {
char ch[256] = "Hello !";
printf("%s\n", ch);
f(ch);
printf("%s\n", ch);
return 0;
}
chris@totorJr:/tmp$ gcc t.c -Wall -Wextra
chris@totorJr:/tmp$ ./a.out
Hello !
---> XXXXX !
XXXXX !
Donc non, il n'y a pas de copies... cf le message précédent pour la logique de la chose.