Как работает адресная арифметика?

int arr[4] = {4,5,6,3};
float * b =(float*)arr;
int * b1 = (int*)arr;
cout << b + 1<<" "<< b1+1<<" "<<b1[1]-b[1]<<endl;

Я не понимаю,почему мы присваиваем указателю типа float указатель на int-массив и когда мы прибавляем ему единицу он прибавляется на sizeof(int) а не sizeof(float),ведь тип указателя float а не int.Я думал адресная арифметика считается относительно базового типа указателя.

И почему b1[1]-b[1] возвращает 5 а не 0?


Ответы (0 шт):