int a[5], *p中,单独a是数组首元素的地址,即a相当于&a[0],(a是常量)
p是int类型的指针变量,p可以理解成一个地址变量,你可以使p = a,那么指针p就指向数组a首元素的地址
A选项p = p+1表示,指针的值往后移,此时p指向a[1]的地址
B选项,因为a是常量,那么常量的值改变明显不合法,例如3 = 3 + 1是不合法的
C选项,p代表了一个地址,a代表了一个地址,p-a表示中间有多少个数据
D选项,常量加减肯定没问题啦,就是2+3嘛,常用法是printf("%d", *(a+2));表示输出首元素后面的第二个元素
2是错的,A是常量,不能做左值