Что происходит в данном случае
int ** ptr = &arr;
? Получается что далее
ptr == arr == &arr
. Почему нельзя получить указатель на указатель на массив в данном случае?
Как будет выглядеть указатель на указатель схематично если ему присвоить адрес элемента, а не адрес указателя? В таком случае получится что можно будет получить значение одинарным разыменованием, а при двойном получается ошибка сегментации.
#include <stdio.h>
int main(void)
{
int arr[4] = {1, 2, 3, 4};
int ** ptr = &arr;
int value = 12;
int * value_ptr = &value;
int ** value_ptr_ptr = &value_ptr;
printf("%d\n", **value_ptr_ptr); // 12
printf("%d", *ptr); // 1
// printf("%d", **ptr); // error
return 0;
}