int a[10]; 表明a是个数组,a是数组名,数组名在C中就解释为一个地址常量,代表数组的首地址。int *p ; 表明p是个指针变量p=a; 这时的p中存储的是数组a的首地址,此时,我们就可以把p当作a一样对待了,因此,可以用p[3]表示a[3], 为什么?呵呵,C就是这样规定的。不知道LZ怎么就把p[3]看成一个指针了?再好好看看书。请采纳答案,支持我一下。