Синтаксис: определить в С++ адрес в памяти

Получить адрес переменной

int var;
&var; // возвращает адрес переменной var

Идентификатор должен быть переменной. Префиксный символ амперсанда (&), используемый совместно с именем переменной, возвращает адрес в памяти, где хранится значение этой переменной, в нашем случае, — для переменной var.

Получить адрес массива

array;

Чтобы получить адрес массива, мы просто используем имя массива, которое само по себе является указателем на адрес в памяти, в котором содержится первый элемент массива. Обратите внимание, что при использовании имени массива, С++ специфицирует его как указатель.

Получить адрес функции

int func(); 
int (*funcPtr)() = &func;

Чтобы получить адрес памяти для функции, просто используйте её имя без скобок с префиксным символом амперсанда, таким образом, компилятор будет знать, что вы  извлекаете адрес функции. Обратите внимание, что адрес присваивается указателю на функцию, то есть через этот указатель можно вызывать функцию, как мы делаем  это обычно, только использовать имя funcPtr, — это псевдоним функции func.

Получить адрес памяти и сохранить его в указателе

char *ptr = new char;
ptr; // вернуть адрес только что выделенной памяти

Указатель по умолчанию возвращает адрес памяти переменной, на которую он указывает. А в этом случае нет никакой переменной, мы просто связали ячейку памяти с указателем.

Разыменование указателей

int var = 4;
int *ptr = &var
*ptr; // возвращаемый результат - значение 4

Символ звездочки разыменовывает указатель, строка 3, таким образом, значение этого выражения является значение переменной, на адрес памяти которой ссылается указатель. ptr.

Автор: Marienko L.
Дата: 03.12.2012
Поделиться:

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.