Pointeur : Adresse en dur
Bonjour bonjour,
petite question un peu stupide mais je bloque ....
J'ai un pointeur sur un unsigned char avec des adresses sur deux bytes ...
Je veux me faire un pointeur qui adresse un endroit specifique de ma memoire et donc lui passer l'adresse en dur ... Je bloque ...
Code:
1 2 3
|
unsigned int *pt;
pt = 0xFFFF; |
Bon bah ca marche pas ... un truc basique que je n'ai pas bien saisi dirait on :D
Pointeur : Adresse en dur
Bonjour,
Je ne sais pas ce que tu veux faire, mais mettre des adresses en dur dans un pointeur n'est pas recommandé.
Néanmoins, si tu persistes : la gestion des pointeurs est très rigoureuse.
Si tu code :
Code:
1 2 3 4 5
| int *pi;
float *pf;
pi = NULL; /* OK */
pf = NULL; /* OK */
pi = pf = NULL; /* Erreur */ |
la dernière ligne ne marchera pas parce que si NULL peut se transtyper implicitement en int* ou float*, tu ne peux pas transtyper implicitement un float* en int*, ce qui se passe à la dernière ligne de ce code.
C'est la même chose avec les entiers. Si tu écris 0xFFFF, il s'agit d'un entier à deux octets et tu ne peux pas le transtyper implicitement en unsigned int *.
La solution passe donc par un transtypage explicite :
Code:
1 2
| unsigned int *pt;
pt = (unsigned int *)0xFFFF; |
Là, ça devrait marcher.