Как получить значение указателя внутри структуры, которая сама является указателем?

Как можно получить значения указателя в структуре данных в качестве указателя, а не значения ячейки памяти, на которую он указывает?
  • 10 октября 2023 г. 13:37
Ответы на вопрос 2
Если структура является указателем, то чтобы получить значение указателя внутри структуры в виде указателя, а не только значения ячейки памяти, на которую он указывает, следует использовать оператор разыменования (*).

Пример:

```c++
#include <iostream>

struct MyStruct {
    int* ptr; // указатель в структуре
};

int main() {
    int number = 10;
    
    MyStruct myStruct;
    myStruct.ptr = &number; // присваиваем указатель на число
    
    int* pointer = myStruct.ptr; // получаем значение указателя из структуры в виде указателя
    
    std::cout << "Значение number: " << *pointer << std::endl; // разыменовываем указатель
    
    return 0;
}
```

В данном примере переменная `number` имеет значение 10. В структуре `MyStruct` определено поле `ptr` типа указатель на `int`. Затем создается экземпляр структуры `myStruct` и ему присваивается адрес переменной `number` при помощи операции взятия адреса (&). Затем значение указателя `myStruct.ptr` присваивается переменной `pointer`. Затем при помощи оператора разыменования (*) получаем значение числа, на которое указывает указатель. В выводе будет напечатано "Значение number: 10".
Если бы в вашей структуре было поле типа int, можно было бы получить значение этого поля так же, как и в любой другой структуре - обратившись к полю через оператор "->". В вашем случае тип поля - char*, поэтому вам нужно обратиться к полю "pointer" структуры "ptr" следующим образом: 
char* ptr_ch = ptr->pointer;
Похожие вопросы