----------------解决方案--------------------------------------------------------
解释下指针
Datatype *p
Datatype是某数据类型,因为p是指向Datatype的,所以显然p++的操作就让p指向的区域移动了sizeof(Datatype)个字节
int a[3][4],(*p)[4];
中的p指向的元素是一个长度为4的数组,对于a[3][4],你也可以这么看,a[3]是一个一维数组,它的元素是长度为4的数组,显然p指向的元素和a对应了
a[3][4]在内存中的储存顺序:
a[0][0],a[0][1],a[0][2],a[0][3],
a[1][0],a[1][1],a[1][2],a[1][3],
.....
一开始p指向a[0][0]这个地址,p++之后,因为p要移动4个int的大小,也就是移动到了a[1][0],如果p指向int:int *p),p++后p只要移动一个int的大小也就到了a[0][1]
PS:如果指针和数组对应引用元素的时候用数组的形式也可以,看起来方便些.比如
int a[3][4],(*p)[4];
p=a;这样要引用a[i][j]就可以直接写p[i][j]当然也可以*(*(p+i)+j)
[此贴子已经被作者于2006-7-8 8:48:03编辑过]
----------------解决方案--------------------------------------------------------
乌鸦解释的很精彩咧~
鼓掌...
简单点理解看11楼的也就够了么...HOHO~
学习啦~
----------------解决方案--------------------------------------------------------
高手!~
----------------解决方案--------------------------------------------------------
我以前问过这个问题,呵呵 可以去找来看看,他们解析得很好,另外论坛里也有专门解析数组和指针的文章,写得很好
----------------解决方案--------------------------------------------------------
就是指向指针的指针.定义时可以**P.楼上几个说得都很好
----------------解决方案--------------------------------------------------------
谢谢各位指点了
对于指针的学习还将继续深入,届时再与大家讨论!
----------------解决方案--------------------------------------------------------