求助,为什么会出现警告提示

main_to_pst *recv_buf=NULL;
recv_buf=(main_to_ps_t *)mmap_device_memory( 0, main_ps_size, PROT_READ|PROT_WRITE, 0, Ps_Membase_rfm);
printf(“recv_buf=%x\n”,recv_buf);
在编译的时候老是对printf(“recv_buf=%x\n”,recv_buf);警告
Warning:unsigned int format,pointer arg(arg2).
请问这是怎么回事?如何解决?
知道的请赐教,先谢谢了^_^

指针内容不应该这样打印。
可以一个个打印,如
printf(“recv_buf=%x\n”,(unsigned int)recv_buf[0]);

recv_buf 是个指针,你的printf的格式是%x,是用十六进制显示一个 int,所以会出警告。

可以在printf里用"%p"来打印指针类型。

哦,原来是这样的
谢谢二位 :smiley:

在C语言书中没有找到“%p”格式,在谭浩强的C程序设计(第二版)一书的228页,可以把一个指向整型变量的指针变量的值输出。
printf(“addr=%o, value=%4d\n”,p,*p);
既然可以以八进制的格式输出,为什么不能用十六进制的整型输出呢?

是有%p表示指针类型的输出格式。警告解决了O(∩_∩)O~
谢谢二位大侠 :smiley: