如何在C语言的程序中将动态分配的二维数组当做一个参数传入某个函数?

来源:百度知道 编辑:UC知道 时间:2024/06/05 07:24:20
只知道如果想把二维数组传入函数,需要知道其第二个维度,即写为:
void func(int arr[][4],int num)
但假如该数组的两个维度都是事先不能确定的变量,则改怎么处理?
谢谢.

我不明白,如果两个维度都不是事先确定,你上面要怎么定义?

arr[][4];

好吧,如果你说的那个可行

那就传那两个维度进去。
前面arr[i][j]
那么就void func(int i,int j,int num)
我不敢保证在func里面使用到arr[][]的时候貌似能直接使用arr[i][j],我记得这样用会出错。
所以你要运算那个地址。
你想要的比如是5行4列的 arr[5][4]
你要第第二行第二个数
那么就要*(arr+(2-1)*4+2),这样来得到数字

如果你事先就知道这个维度的话,
直接设定个全局变量
然后连数组都不用传进去就可以直接运算的。
数组是记录地址的,会直接修改在原来的地方

void f(int* p, int row, int col);
的形式,里面用 p[i*col+j]来表示p[i][j]

我觉得数组的维度应该能确定吧,不管这个数组时数值型的还是字符型的,在建这个数组时应该能确定这个数组的维度,否则不能建立一个数组的

我觉得楼上说的有道理啊,而且我认为你说的情况不够详细,这样不好讲。