c указатели - формат предупреждения "% x" ожидает аргументы типа "unsigned int" - PullRequest
7 голосов
/ 15 марта 2012

Я сейчас читаю «Взломать искусство эксплуатации», и там есть пример, который я не могу исправить.Попытка скомпилировать приводит к ошибке:

./addressof.c: In function ‘main’:
./addressof.c:8:4: warning: format ‘%x’ expects argument of type ‘unsigned int’,
but argument 2 has type ‘int *’ [-Wformat]


#include <stdio.h>
int main() {
   int int_var = 5;
   int *int_ptr;

   int_ptr = &int_var; // Put the address of int_var into int_ptr.

   printf("int_ptr = 0x%08x\n", int_ptr);
   printf("&int_ptr = 0x%08x\n", &int_ptr);
   printf("*int_ptr = 0x%08x\n\n", *int_ptr);

   printf("int_var is located at 0x%08x and contains %d\n", &int_var, int_var);
   printf("int_ptr is located at 0x%08x, contains 0x%08x, and points to %d\n\n",
      &int_ptr, int_ptr, *int_ptr);
}

Я понимаю, где ошибка, я просто не уверен, как это исправить.

1 Ответ

16 голосов
/ 15 марта 2012

Формат указателя для указателя %p, а не %x.(См. здесь )

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