二维数组传参及引用格式简化

少于 1 分钟读完

C语言中,二维数组的参数传递是一个比较复杂繁琐的问题,尤其是动态申请的二维数组。 动态申请二维数组、传递参数及引用的一般过程如下 1、在函数M中动态申请一个数组matrix[row][col] 2、函数M调用函数Func,并用matrix作为参数,形如Func(matrix[0], row, col) 3、在函数Func(int *m, int row, int col)中这样使用二维数组 读取m[i][j],只能用*(m + i*col +j)来引用 下面我用一种方法让数组matrix在函数Func中一样如matrix[i][j]的简便形式引用。
int **citePointer(int *matrix, int row, int col)
{
	int i, **m;
	m = (int**)malloc(sizeof(int)*row);
	for(i=0; i<row; i++)
		m[i] = (matrix +i*col);
	return m;
}
void initMatrix(int *matrix, int row, int col)
{
	int **m;
	m = citePointer(matrix, row, col);
	int i, j;
	for(i=0; i<row; i++)
		for(j=0; j<col; j++)
			m[i][j] = 119; 
}
用这种方法,空间开销多了一个指针数组,大小是二维数组的行数。

留下评论