首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么传递二维数组做为参数

2012-03-24 
如何传递二维数组做为参数int a[2][2]{ {4, 6}, {9, 11} }我定义了这样一个数组,我就像把这个数组作为参

如何传递二维数组做为参数
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]
[解决办法]
两维都不固定的数组是不合法的,所以你的期望无法实现

探讨
你说的方法也行,相当于就用一维数组了,不过还是觉得用二维数组取下标的方式比较舒服。
我就是想舒服一点,觉得自己的办法太笨了,问问大家有没有好的处理二维数组的方法。

[解决办法]
探讨
你说的方法也行,相当于就用一维数组了,不过还是觉得用二维数组取下标的方式比较舒服。
我就是想舒服一点,觉得自己的办法太笨了,问问大家有没有好的处理二维数组的方法。

[解决办法]
非要采用下标语法,要么第二维固定,要么传递指针数组,你已经理解到极点了。
[解决办法]
你要传递给fan的无非是数组首地址,管他是几维的。因此你可以让fun接受数组的的形参位int *iAray
在fun里面你把它当成一个二维数组去处理。利用 
C/C++ code
*(iAry+(i*iRows)+j)
[解决办法]
探讨

你只能把2为数组 当成1为数组来 理解,因为编译器就是这么理解的

热点排行