J'ai construit les sections de code ci-dessous pour me aider à comprendre le pointeur déréférencement et transtypage en C.déréférencement et transtypage
char a = 'a';
char * b = &a;
int i = (int) *b;
Pour ce qui précède, je comprends que sur la 3ème ligne, j'ai déréférencé b et a obtenu 'a' et (int) transcrira la valeur de 'a' à sa valeur correspondante de 97 qui est stockée dans i. Mais pour cette section de code:
char a = 'a';
char * b = &a;
int i = *(int *)b;
Il en résulte i étant un certain grand nombre arbitraire comme 792351. Je suppose que c'est une adresse mémoire, mais ma question est pourquoi? Lorsque je transpose b en un pointeur entier, est-ce que b fait pointer vers une autre zone en mémoire? Que se passe-t-il?
EDIT: Si cette procédure ne fonctionne pas, alors pourquoi quelque chose comme ce travail:
char a = 'a';
void * b = &a;
char c = *(char *)b;
Cette correctement attribue 'a' à c.
merci qui a beaucoup de sens. – Sam