C/C++

Как взять значение конкретного адреса в памяти?

Мне известен адрес в памяти, значение которого я хочу изменить.
Фарид Ануаров
Фарид Ануаров
1 675
какое значение? Типы данных не просто так придумали: знаковое/беззнаковое, целое и какого размера/одинарное с плавающей точкой/двойной точности. Вот и надо объявить соответствующий указатель, присвоить ему значение адреса, а потом по указателю читать или писать значение.
int* pointer=0x666;
*pointer=999;
Рустам Наботов
Рустам Наботов
67 773
Лучший ответ
int x = 5; // это инициализированная переменная, она хранит значение и находится в памяти по какому-то адресу

int* p = nullptr; // это указатель – переменная, которая умеет хранить адрес объекта, расположенного в памяти, но для этого ей этот адрес нужно присвоить

p = &x; // это присвоение адреса переменной указателю с использованием операции взятия адреса, теперь указатель «p» хранить адрес переменной «x»

*p = 8; // чтобы через указатель изменить значение переменной следует получить доступ к этому значению, используя операцию разыменования «указателя»
ты в курсе, что память делится на виртуальную и физическую, и это не равнозначные понятия
Нуржан Ахметов
Нуржан Ахметов
62 858
Если известен адрес, то для получения значения его нужно привести к тому типу (например char для одного байта), который хотим получить, прочитав из этого адреса, после чего разыменовать (указав звездочку перед приведением).

Следует учесть, что в операционных системах идёт защита отдельных блоков, например, 64кб или 1мб околонулевых адресов на случай ошибки индексации, также могут защищаться блоки, где не было выделено памяти, в таком случае получим исключение
Максим Марфин
Максим Марфин
30 155
руками чел
Компьютерная память это слишком обобщенное понятие скрывающие кучу слоев абстракций и без уточнения контекста в котором задается вопрос ответить правильно на него невозможно.
Как пример похожего вопроса с неполными исходными данными.
--- > Какая будет сумма от сложения двух чисел?
В памяти ничего не изменишь чел!