无效指针类型转换

时间:2014-12-16 10:16:45

标签: c pointers

我想打印void指针的地址

u32 j;
for (j = 0; j < sizeof(struct queue_header); j += 4) 
{
    printf("0x%x ",(u32 *)((u32 *)q->q_hdr + j)); //q_hdr  is a void pointer        
}

但该类型转换错误:

  

警告:从指针强制转换为不同大小的整数[-Wpointer-to-int-cast]

你可以告诉我如何打印地址。

2 个答案:

答案 0 :(得分:8)

这就是%p的用途:打印指针。

printf("%p ", (void *)((u32 *)q->q_hdr + j));

应该做你想做的事。

答案 1 :(得分:0)

您的代码是否在64位平台(Intel Core 2 Duo,i7)上运行?

也许&#34;%lx&#34;适用于printf。

您还需要将printf的参数转换为64位整数。