Здесь странный код:
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, почему?
Здесь странный код:
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, почему?
Код
printf("%f\n",p);
вызывает неопределенное поведение. Чтобы напечатать адрес (указатель), который является типом, до которого распадается имя массива при передаче в качестве аргумента функции, вам необходимо:
%p
.(void *)
.
printf("%f\n",p);
- UB. - person BLUEPIXY   schedule 31.03.2017