Нет необходимости в том, чтобы спецификатор форматирования %p
выставлял выход на любую фиксированную длину. Таким образом, вы не можете выводить какую-либо информацию о «длине» в памяти адреса из печатного представления. Например, если вы сделаете это:
const void *nada = NULL;
printf("NULL is at %p\n", nada);
Вы можете также увидеть что-то вроде этого:
NULL is at 0x0
Конечно, это вовсе не означает, что void *
тип волшебно занимая только 4 бита, когда значение NULL
, это просто означает, что когда значение указателя было преобразовано в строку, ведущие нули были опущены.
UPDATE: Не прочитанный код вопроса, я удалил ненужный текст.
@PaulR: Да, неправильно прочитайте код вопроса. Спасибо, исправлено! – unwind