Возможный дубликат:
Исправить спецификатор формата для печати указателя (адреса)?
При печати указателя с помощью printf необходимо ли указывать указатель на void *? Другими словами, в коде типа
#include <stdio.h>
int main() {
int a;
printf("address of a = %p\n", &a);
}
должен ли аргумент действительно быть (void *) &a? gcc, похоже, не дает никаких предупреждений, когда явное приведение не производится.