use*_*855 -2 c printf format-specifiers
这里有一个奇怪的代码:
const double a[] = {0,1,2,3,4};
int main()
{
double *p = a;
printf("%f\n",p[2]); //2.000000
printf("%f\n",p); //2.000000
}
Run Code Online (Sandbox Code Playgroud)
它返回2.000000,为什么?
代码
printf("%f\n",p);
Run Code Online (Sandbox Code Playgroud)
导致未定义的行为.要打印一个地址(指针),这是一个数组名称在作为函数参数传递时衰减的类型,您需要
%p转换说明符.(void *).