无效指针类型转换

Eul*_*ler 1 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        
}
Run Code Online (Sandbox Code Playgroud)

但该类型转换给出了错误:

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

你能告诉我怎么打印地址吗?

glg*_*lgl 8

%p就是:打印指针.

printf("%p ", (void *)((u32 *)q->q_hdr + j));
Run Code Online (Sandbox Code Playgroud)

应该做你想做的事.