我想创建一个打印int,float和double的地址的程序。
int main()
{
int a;
float b;
double c;
printf("\na:%d \nb:%f \nc:%lf", &a, &b, &c);
}
但最后我得到的是int的地址。对于另外两个,答案是0.00000。
答案 0 :(得分:2)
用于打印内存地址(指针)的正确格式说明符为%p
。您也可以将参数转换为(void*)
,因为标准表明%p
要求其参数属于void*
类型。
使用错误的格式说明符会导致未定义的行为。
答案 1 :(得分:2)
使用说明符%p
打印地址。
printf("\na:%p \nb:%p \nc:%p",(void *)&a,(void *)&b,(void *)&c);
答案 2 :(得分:1)
使用%p
打印void
的地址。 printf
似乎无法直接指向float
。
试试这个:printf("\na:%p \nb:%p \nc:%p", (void*)&a, (void*)&b, (void*)&c);