Сегодня я прочитал фрагмент C, который меня действительно смущает:
#include <stdio.h>
int
main(void)
{
int a[] = {0, 1, 2, 3};
printf("%d\n", *(*(&a + 1) - 1));
return 0;
}
По-моему, &a + 1
не имеет смысла, но работает без ошибок.
Может кто-нибудь объяснить, что это значит, спасибо. И охватывает ли Библия K & R C?
UPDATE0: Прочитав ответы, я понимаю, что эти два выражения в основном меня смущают:
-
&a + 1
, который был задан в SO: о выражении "& anArray" в c -
*(&a + 1) -1
, который связан с распадом массива.