В C и C ++ это довольно просто.Я приведу пример на C ++:
struct App
{
int x;
App() : x(3) { }
};
int main()
{
App a;
int * p = &a.x; // address goes here
}
Нет, конечно, такой вещи, как "переменная App::x
", поскольку App
- это только тип .Каждый экземпляр этого типа, такой как a
в примере, несет свой собственный набор переменных-членов, и указатель на переменную-член легко получить.(То же самое верно и для простых структур данных в C.)
Обратите внимание, что в C ++ есть еще одна связанная функция: указатели на элементы.Это позволяет нам сформировать непрозрачное значение int App::*pm = &App::x
, которое само по себе ни на что не указывает, а только содержит информацию о смещении из App::x
внутри класса, если хотите.Это животное можно использовать вместе с экземпляром для получения действительного значения, например, a.*pm
.