У меня небольшие затруднения с пониманием того, как этот код выводит 10. Я понимаю, что p - это адрес первого элемента в массиве указателей, то есть p + 1 - это адрес второго элемента списка. Значение * (p + 1) - это адрес первого элемента массива n. Следовательно, * (* (p + 1) + 1) вычисляется для 2-го элемента массива n. Тем не менее, я запутался в том, как приведенный ниже код печатает значение 10, означающее первый элемент массива r. Помощь очень ценится.
int m[4]={-2,3,6,8,9}, n[4]={7,6,4,3}, r[4]={10,-3,5};
int *p[3]={m,n,r};
printf("%d", *((p+1)[1]));