指针表示数组谁能详解一下?

int main(void)
{
int a[3] = {199 ,299 ,188};
int *p = a;
printf("%d", p[0]);
return 0;
}
这段代码是用指针表示数组,为什么能这样表示。int *p = a;用了这个之后为什么p就是一个数组了?

你的数组名a,其实是一个地址,他的结果是一个指针,指针类型是数组名的类型加*,所以指针式一个int*,第二行,int*p=a,也就顺理成章了。a是首个元素的地址,通过指针调用的,所以就变成第一个元素了。
http://t.csdn.cn/ajNEh
自己做的博客,超详解。

数组其实是一段连续的内存块,数组名就指向这块内存块的首地址,因此用int *p = a,使得p这个指针也指向数组a内存块的首地址,所以用p也可以来访问这块内存数据,和数组名在这个方面的作用是一样的。

供参考:https://blog.csdn.net/cherrydreamsover/article/details/81741459


可以查看手册:c语言-指针 中的内容