Как создать указатель на буфер из char []

60
7

Если у вас есть адрес памяти буфера, и этот адрес хранится в char bufferAddress[] = "0024ABC3", например: char bufferAddress[] = "0024ABC3", как вы можете создать указатель, используя bufferAddress чтобы вы могли обращаться к переменным в буфере?

спросил(а) 2014-08-25T20:37:00+04:00 6 лет, 4 месяца назад
1
Решение
85

Если вы можете получить строку в число, вы можете попробовать что-то вроде этого:

void *ptr = reinterpret_cast<void*> (0x0024ABC3);

Здесь есть еще несколько потоков, которые касаются назначения адресов указателям напрямую, поэтому вы также можете проверить их. Здесь один: как инициализировать указатель на определенный адрес памяти в C++

ответил(а) 2014-08-25T20:45:00+04:00 6 лет, 4 месяца назад
85

Вы можете выполнить задачу, используя std::istringstream. Например

#include <iostream>
#include <sstream>

int main()
{
char bufferAddress[] = "0024ABC3";
std::istringstream is( bufferAddress );
void *p;

is >> p;

std::cout << "p = " << p << std::endl;

return 0;
}

Выход


p = 0x24abc3

Если буфер имеет тип char * тогда вы можете переинтерпретировать этот указатель на void на указатель на char. Например

char *buffer = reinterpret_cast<char *>( p );

ответил(а) 2014-08-25T20:52:00+04:00 6 лет, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема