web-dev-qa-db-fra.com

Comment attribuer une adresse de pointeur manuellement dans le langage de programmation C?

Comment attribuer une adresse de pointeur manuellement (par exemple, à l'adresse mémoire 0x28ff44) dans le langage de programmation C?

43
Irakli

Comme ça:

void * p = (void *)0x28ff44;

Ou si vous le souhaitez en tant que char *:

char * p = (char *)0x28ff44;

...etc.

Si vous pointez sur quelque chose que vous n'êtes vraiment pas censé changer, ajoutez un const:

const void * p = (const void *)0x28ff44;
const char * p = (const char *)0x28ff44;

... car je pense que cela doit être une sorte d '"adresse bien connue" et celles-ci sont généralement (mais en aucun cas toujours) en lecture seule.

67
T.J. Crowder

Votre code serait comme ceci:

int *p = (int *)0x28ff44;

int doit être le type de l'objet auquel vous faites référence ou il peut être void.

Mais soyez prudent afin de ne pas essayer d'accéder à quelque chose qui n'appartient pas à votre programme.

8
zsalzbank
int *p=(int *)0x1234 = 10; //0x1234 is the memory address and value 10 is assigned in that address


unsigned int *ptr=(unsigned int *)0x903jf = 20;//0x903j is memory address and value 20 is assigned 

Fondamentalement, dans la plate-forme intégrée, nous utilisons directement des adresses au lieu de noms

2
kamal

L'écriture:

int *p=(int *)0x1234 = 10;

n'est pas légal pour certains compilateurs. Vous devez diviser en deux instructions:

int *p=(int *)0x1234; *p = 10;

0
Phil