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é) :
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);
 
}
Et voilà ce que me sort la fonction :
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