int arr[10], *ptr;
ptr = arr;
printf("%p %p\n", &arr, &ptr);
// 0x7ffc2b3f5a30 0x7ffc2b3f5a28
printf("%p %p\n", &arr[0], &ptr[0]);
// 0x7ffc2b3f5a30 0x7ffc2b3f5a30
В первом случае адреса не равны, почему? Слева - адрес массива, который идентичен адресу &arr[0], справа - указатель туда же. Во втором же случае, когда явно указал индекс массива 0, получаю одинаковые адреса.