Comment attribuer manuellement une adresse de pointeur (par exemple à l'adresse mémoire 0x28ff44
) dans le langage de programmation C ?
Réponses
Trop de publicités?Comme ça:
void * p = (void *)0x28ff44;
Ou si vous le voulez en char *
:
char * p = (char *)0x28ff44;
...etc.
Si vous indiquez 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;
... puisque je pense que cela doit être une sorte d'"adresse bien connue" et celles-ci sont généralement (mais pas toujours) en lecture seule.
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 embarquée, nous utilisons directement des adresses au lieu de noms
disons que vous voulez qu'un pointeur pointe sur l'adresse 0x28ff4402, la manière habituelle est
uint32_t *ptr;
ptr = (uint32_t*) 0x28ff4402 //type-casting the address value to uint32_t pointer
*ptr |= (1<<13) | (1<<10); //access the address how ever you want
Donc le plus court est d'utiliser une MACRO,
#define ptr *(uint32_t *) (0x28ff4402)