回 帖 发 新 帖 刷新版面

主题:[讨论]对指针的参数传递还是不懂。

在代码中有一个函数void mazepath(int (*maze)[N],int (*direction)[2],int x1,int y1,int x2,int y2,int m,int n)//M,N定义为10了;
在主函数中调用该函数:mazepath(maze,direction,1,1,8,8,10,10);在主函数main()中是这样定义int maze[M][N],int direction[4][2]两个变量的。在主函数中用maze,direction这两个实参赋给(*maze)[N],(*direction)[2]的,我不是很明白:在main()函数中明明定义的是4行2列的数组direction,怎么传递给一个(*direction)[2]了了?这表示的是什么?还有int (*direction)[2] 和 int *direction[2]各表示的意义是什么?

回复列表 (共3个回复)

沙发

*direction本身可以理解为一个数组的首地址指针
对于二维数组
(*direction)[]指的是以direction*来指向数组的第一维顺序,第二维自行指定的调用方法,是一个整体的指针
也就是说
(*direction)[]==direction[][]
而int *direction[]是整形指针数组,是多个指针

板凳

[quote](*direction)[]指的是以direction*来指向数组的第一维顺序,第二维自行指定的调用方法[/quote]数组第一维就是行地址呀,那就是指向每行的开始位置是不是呀?

3 楼

[quote][quote](*direction)[]指的是以direction*来指向数组的第一维顺序,第二维自行指定的调用方法[/quote]数组第一维就是行地址呀,那就是指向每行的开始位置是不是呀?
[/quote]
是的
行的首地址

我来回复

您尚未登录,请登录后再回复。点此登录或注册