Salut,
Je viens de tomber sur un bout de code étrange et je n'aurais jamais imaginé qu'il puisse marcher. Mais, parce que s'il n'y avait pas de mais je n'aurais pas besoin de poster ici, il marche. Et je ne comprends pas pourquoi.
Voici en gros le code (épuré) :
Et voilà ce que me sort la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <string.h> #include <stdio.h> #include <stdlib.h> void main() { char Chaine[30]; char Reception[30]; strcpy (Reception,"WASSUP MATE !?"); memcpy(Chaine,&Reception,15); printf("Reception|%s\n",Reception); printf("Chaine|%s\n",Chaine); printf("Reception|%p\n",Reception); printf("&Reception|%p\n",&Reception); }
Reception|WASSUP MATE !?
Chaine|WASSUP MATE !?
Reception|7A90FA28
&Reception|7A90FA28
Alors voilà, j'aurais imaginé que &Reception me donnait un pointeur sur Reception, donc un char**, et que le memcpy prendrait absolument n'importe quoi
Apparemment ce n'est pas le cas, &Reception a la même valeur que Reception (comme on peut le voir avec les printf).
Est-ce que quelqu'un peut m'expliquer la mécanique derrière tout ça ?
Merci d'avance
PS : je suis sous OpenVMS, j'ai pas testé avec gcc
PPS : désolé si la réponse est quelque part, je n'ai pas réussi à trouver
Partager