string * sptemp = (string *) 0x000353E0;
Что именно этот код хочет сказать?C++ строки и указатели путаницы
Я знаю, что в левой части мы определяем указатель на строку, но я не мог понять правильную часть.
string * sptemp = (string *) 0x000353E0;
Что именно этот код хочет сказать?C++ строки и указатели путаницы
Я знаю, что в левой части мы определяем указатель на строку, но я не мог понять правильную часть.
Это означает, что требуется числовое значение, преобразовать его в указатель с этим значением в качестве адреса, на который он указывает, а затем использовать это значение для инициализации переменной sptemp
.
Если память по этому адресу содержит действительный объект string
, то вы можете использовать указатель для доступа к нему. Если нет, попытка сделать это даст неопределенное поведение.
string * sptemp = (string *) 0x000353E0;
Что этот код точно хочу сказать?
Он говорит, относиться к данным, расположенным по адресу 0x000353E0
, как будто он держит string
и присвоить адрес переменной sptemp
. Доступ к данным можно получить через переменную указателя sptemp
.
На самом деле это не говорит о доступе, не так ли? Он просто говорит, что это так. –
@EvdzhanMustafa, присваивая значение переменной 'sptemp', вы можете получить доступ к этому значению через этот адрес. –
Эти комментарии в основном правы, но не полностью. Мы действительно не знаем, что строка содержит std :: string. Может быть, строка - это бит оборудования с отображением памяти, адрес которого на встроенном SBC OP определяется аппаратным обеспечением 0x000353E0. В этом случае это вполне разумно, и то, что люди делают все время. Указатель «string * sptemp» установлен на аппаратный интерфейс.
Но это, наверное, вздор.
Это в значительной степени кричит неопределенное поведение. –
Правая часть - это значение *, заданное объекту, определенному слева. Также как в 'int n = 10;'. –
- это то же самое: string * sptemp; sptemp = 0X000353E0 –