Как назначить адрес указателя вручную на языке программирования C? - PullRequest
43 голосов
/ 26 декабря 2010

Как назначить адрес указателя вручную (например, адресу памяти 0x28ff44) на языке программирования C?

Ответы [ 4 ]

67 голосов
/ 26 декабря 2010

Вот так:

void * p = (void *)0x28ff44;

Или, если хотите, как char *:

char * p = (char *)0x28ff44;

... и т. Д.

Если выуказывая на то, что вы действительно, на самом деле, не должны менять, добавьте const:

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

... так как я считаю, что это должен быть какой-то "известный адрес", и этообычно (хотя и не всегда) только для чтения.

8 голосов
/ 26 декабря 2010

Ваш код будет выглядеть следующим образом:

int *p = (int *)0x28ff44;

int должен быть типом объекта, на который вы ссылаетесь, или это может быть void.

Нобудьте осторожны, чтобы не пытаться получить доступ к тому, что не принадлежит вашей программе.

2 голосов
/ 17 сентября 2015
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 

В основном на встраиваемой платформе мы используем адреса вместо имен

0 голосов
/ 12 июня 2019

Письмо:

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

не разрешено для некоторых компиляторов. Вам нужно разделить на две инструкции:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...