指针的指针做输入参数代替二维数组?
有时在写程序是会碰到定义函数输入参数要一个二维数组,但并不能确定数组内的元素个数时,这种情况可以用指针的指针做输入参数解决问题。
因为不用指针的指针,二维数组做多也只能有一维定义时不给出元素个数 (int a[][3])。
指针的指针做输入参数好处就是,不用在定义时就要知道组内元素个数,可以在调用时输入,这样定义的函数更通用。
下面写一个实现例子:
指针的指针做输入参数代替二维数组?
有时在写程序是会碰到定义函数输入参数要一个二维数组,但并不能确定数组内的元素个数时,这种情况可以用指针的指针做输入参数解决问题。
因为不用指针的指针,二维数组做多也只能有一维定义时不给出元素个数 (int a[][3])。
指针的指针做输入参数好处就是,不用在定义时就要知道组内元素个数,可以在调用时输入,这样定义的函数更通用。
下面写一个实现例子:
评论已关闭。
int Data[3][3]= { {1,1,1},{1,1,1},{1,1,1} } ;
Fun((int**)Data,3,3);
还可以用强制类型转换,这样就不用new数组,
还有一个重要的问题是,new出来的二维数组不一定是连续的。
你的做法是错的 函数内部p[1][1] 不能正确访问到Data[1][1]
比较简单的做法是 用一级指针 并且外部传入二维大小 函数内部手动计算下标
比如
https://gitee.com/lin5161678/codes/ntzd72ksl1m8x3hrigyvw71
对的,你讲这方法也比较常用,特别是在图像处理访问元素。这样方法的好处是因为一维数组分配时不管是静态还是动态,它在内存中都是连续的,二维数组动态分配就不一定是连续。