大家看看这个int(*p)[3]的有关问题,小弟我想好久想不明白

大家看看这个int(*p)[3]的问题,我想好久想不明白
部分代码如下:
int b[3]={1,2,3};
int (*p)[3];
p=&b[0];
for(int i=0;i<3;i++)
printf("%5d",*(*p+i));
return 0;
为什么编译时出错?错误是    error C2440: '=' : cannot convert from 'int *' to 'int (*)[3]'   ;大家看看这个int(*p)[3]的有关问题,小弟我想好久想不明白
int(*p)[3]的意思不是定义一个含有3个整形元素的指针么,那p不是指针吗 ?p=&b[0] 有什么错 ,搞不懂、

------解决方案--------------------

int b[3]={1,2,3};
int (*p)[3];
p=&b;
for(int i=0;i<3;i++)
printf("%5d",*(*p+i));
return 0;

&b[0]是对b的第一个元素的地址再取地址
------解决方案--------------------
引用:
Quote: 引用:


int b[3]={1,2,3};
int (*p)[3];
p=&b;
for(int i=0;i<3;i++)
printf("%5d",*(*p+i));
return 0;

&b[0]是对b的第一个元素的地址再取地址
谢谢你的回复;&b[0]是对b的第一个元素的地址再取地址,那么&b就是数组b的第一个元素的地址吗?还有、,我不是很理解*(*p+i) ;p是什么。*p是什么,(*p+i)是什么;*(*p+i)又是什么,可以讲讲吗


理解下数组指针,和指针数组
看看
http://www.cnblogs.com/Romi/archive/2012/01/10/2317898.html