如何传递二维数组做为参数
int a[2][2]={ {4, 6}, {9, 11} };
我定义了这样一个数组,我就像把这个数组作为参数,传递到一个函数中,并要在函数中能引用该二维数组的元素,我该怎么做?
void fun(int arr[][2], int iRows){}
这样可以,但我不希望在参数就把第二维的大小给固定了,因为我这个数组大小也不定是多少。
void fun(int **arr, int iRows, int iCols){}
这样不能直接传递a作为参数,需要再声明一个指针数组,然后再传递,像这样:
int *b[2];
b[0] = a[0];
b[1] = a[1];
然后把b作为参数传进去。
但我觉得不方便。
有没有方便一点的办法,能够直接传递二维数组名做为参数?
[解决办法]
c语言很灵活的啊,怎么实现都行
void fun(int *p_arr, int iRows, int iCols)
{
int x = *(p_arr + (iRows-1)*2 + iCols - 1);
...
}
别管什么一维数组还是几维数组,都是指针嘛
------
非凡技术论坛 www.feifanbbs.com 程序员职业化之路
[解决办法]
int(*a)[20];这样可以传二位数组名
[解决办法]
int(*a)[2]
[解决办法]
两维都不固定的数组是不合法的,所以你的期望无法实现
*(iAry+(i*iRows)+j)
[解决办法]