c语言指针数组问题不会求解决

#include <stdio.h>
int main()
{
    int a[10]={1,2,3,4,5,6,7,8,9,10},p=&a[3],b;
    b=p[5];
    printf("%d",b);
    return 0;
}
b=p[5]这步的详细过程是啥,
p=&a[3],它得到的是4,b=p[5]看不懂这步往求解

p一开始指向4,相当于p[0] = 4
p[5]表示往后移5位
p[5] = 9

*p是4的地址,
p[5]就是在4所在地址后第5个,就是9