#include <stdio.h>
int main(void)
{
int a[5]={1,2,3,4,5};
int *ptr=(int*)(&a+1);
printf("%d %d\n",*(a+1),*(ptr-1));
return 0;
}
Вывод:
2,5
Я не мог понять, как *(ptr-1)
оценивается как 5 (правильный вывод).Но когда я сделал это вручную, это было 1. Мое понимание: *(ptr-1)
будет оценено как *(&a+1-1)
, что будет *(&a)
, что равно 1.
Пожалуйста, помогите мне понять эту концепцию.