Указатели

int *p1,a; Как сделать чтобы указатель ссылался на адрес 0x70, а через переменную "а" менять содержимое ячейки?
9 ответов

p1 = 0x70;
(*p1) = new_value;
а - здесь лишняя


Ругается на p1 = 0x70; невозможно преобразовать 'int' в 'int *'


int *p1,a;
 p1 = (int*)0x70;
 (int*)a = p1;


2liljon
(int*)a = p1;
что за бред?


2liljon
(int*)a = p1;
что за бред?
а через переменную "а" менять содержимое ячейки?
вот и ответ


Ошибка 1 error C2106: =: левый операнд должен быть левосторонним значением ругается на " (int*)a = p1;"


а билдер пропускает нормально. тогда так a = *(int*)&p1;


а билдер пропускает нормально. тогда так a = *(int*)&p1;
но мы не сможем менять то что по адресу 0x70, использовать ссылки нужно:
int *p = 0x70;
 int &a = *p;


2liljon
вот и ответ
знают взрослые и дети, после приведения типа к указателю, значение становится rvalue. да и вообще, после любого приведения
а билдер пропускает нормально. тогда так a = *(int*)&p1;
взял адрес переменной, где хранится указатель, привел к обычному указателю и разыменовал...... чтож ты хочешь увидеть в итоге в "a"? адрес, на который указвает p1? не проще ли
a = (int)p1;
?вообщет я даже задания автора не понял, что он хочет