怎么用函数传递二位数组
来源:百度知道 编辑:UC知道 时间:2024/05/22 14:11:59
const int MaxX=5;
const int MaxY=5;
int b[MaxX][MaxX];
怎么把一个二维数组传递到一个函数里去呢?函数的形参怎么设置?
让我满意可以再加分。
可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:
void Func(int array[3][10]);
void Func(int array[][10]);
需要模仿编译器的行为把array[i][j]这样的式子手工转变为:
*((int*)array + n*i + j);
在调用这样的函数的时候,需要注意一下,如下面的例子:
int a[3][3] =
{
{1, 1, 1},
{2, 2, 2},
{3, 3, 3}
};
Func(a, 3, 3);
你这个是C++吧?C里面还真不能用const常量定义数组。不过没关系,作为参数都是一样的。
方法1:以数组指针作为形参,函数声明为
(返回类型) function( int (*p)[MaxY],int x );
或
(返回类型) function( int p[][MaxY], int x );
调用时形参x的位置以二维数组b的行数作为实参取代;
方法2:以指针数组作为形参,函数声明为
(返回类型) function( int **p, int x, int y );
或
(返回类型) function( int *p[], int x, int y );
调用时,形参x,y的位置以二维数组b的行数和列数作为实参取代。
抱歉,前面方法2给记错了,现在可以了,要注意的是,方法2虽然有行列数可变的优势,但在调用前必须将二维数组改写为指针数组(*p[]形式)才可用。
例子:
#include <stdio.h>
#define MaxX 5
#define MaxY 5
int average1( int **p, int x, int y );
int average2(