这里有一个奇怪的代码:
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
}
它返回2.000000,为什么?
答案 0 :(得分:6)
代码
printf("%f\n",p);
导致undefined behavior。要打印作为函数参数传递的数组名称衰减类型的地址(指针),您需要
%p
转换说明符。(void *)
。