c语言中怎么把一个大小不确定的二维数组当作参数传入函数中,取大神,取大神,取大神
如果是int类型的话,那就int a* ,即传入指向二维数组的指针,然后用指针取行列元素即可。
用VC++新建一个程序,默认生成的main函数定义如下
int mian(int argc, char* args[])
这就是一个例子。
一个表示长度的参数,一个指向二维数组的指针
fun(args[][],int rows,int cols)
void Func(int array[][10]);
也可以是void Func(int **array);
参考:http://blog.csdn.net/xudongdong99/article/details/6723163
当然要传入二个维度大小了,此外可有两种常见传递方式
(以int为例。)
1.传入一个指向二维数组首地址指针,注意二维数组名的类型是诸如int(*)[10]之类的而不是int**之类的,受数组列数影响。
2.传入一个(看上去是取了一次内容的)*a到普通指针(int*),用b[m*i+j]来获取a[i, j],其中m是二维数组列数。
关键在于函数如何设计了,有以下两种形式:
第一种, void fun(const void **args,int rows,int cols)
第二种, void fun(const struct *mat)
其中mat是一个结构体,包含数据指针以及行列信息:
struct mat {
void **data;
int rows, cols;
};