Как я могу распечатать адрес памяти переменной? - PullRequest
14 голосов
/ 29 апреля 2009

Я хотел бы напечатать, что скрывается за & myVariable. Я попробовал NSLog (& myIntVar); но это не сработает.

Ответы [ 3 ]

36 голосов
/ 29 апреля 2009

Аргумент NSLog должен быть строкой NSSt, поэтому вы хотите

NSLog(@"%p", &myIntVar);
4 голосов
/ 29 апреля 2009

Попробуйте:

NSLog(@"%p", &myIntVar);

или

NSLog(@"%lx", (long)&myIntVar);

Первая версия использует специфичный для указателя формат печати, который предполагает, что переданный параметр является указателем, но внутренне обрабатывает его как длинный.

Вторая версия берет адрес, затем переводит его в длинное целое число. Это необходимо для переносимости на 64-битных платформах, поскольку без спецификатора формата "l" предполагается, что предоставленное значение является целым числом, обычно длиной всего 32 бита.

0 голосов
/ 28 апреля 2015

NSLog (@ "% х", & myIntVar); % x для длинных int или вы можете напечатать как Nslog (@ "% p", & myIntVar); % p для указателя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...