c语言c++语言如何用二维数组做形参?

如题所述

C/C++中,二维数组的第一维的每一个元素都是一维数组。所以,用指向一维数组的指针或用第一维维数空缺的二维数组作为函数的形式参数都能达到目的。设处理数组为int型,举例代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
void myprint(int (*p)[5]){//p是指向有5个int型元素的一维数组的指针
//void myprint(int p[][5]){//这样写效果是一样的
    int i,j;
    for(i=0;i<3;i++){
        for(j=0;j<5;printf("%3d",p[i][j++]));
        printf("\n");
    }
}
int main(void){
    int a[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};
    myprint(a);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-24
二维数组做形参?C++的数组用形参的时候非常之弱,你确定你需要它?
N维数组做形参必须指定后n-1维的大小,不然编译器无法知道如何使用它,

void func(int a[][10]) 或 void func2(int b[][10][10])

虽然写是可以这样子写,不过,其实上面那种代码等价于
void func(int (*a)[10]) 和 void func2(int (*b)[10][10])本回答被网友采纳
第2个回答  2012-10-24
作为形参时函数的定义:返回值类型 函数名(数组类型 数组名[第一维大小][第二维大小])
说明:注意二维数组定义时第二维大小不能省略,第一维大小可省。
作为实参时:实参直接写二维数组名即可。
例:
void Output(int _arrA[][4]);//定义函数,注意二维数组定义或者作为参数时第二维大小必须有
int main()
{
...............;
Output(arrA);//调用函数,数组名作为实参传递给函数

return 0;
}

void Output(int _arrA[][4])//注意第二维大小必须有
{

}
第3个回答  2012-10-24
要么你告诉他这是个二维数组

int arr[N][N]
要么自己决定偏移量

int * arr
*(*(arr+x)+y)追问

我要的是不能决定一维和二维长度的二维数组的参数传递!

追答

看仔细一点,后面不是说了自己决定偏移量的办法吗

追问

你这样参数传递不合法的,得进行强制转换,转换过后会出现段错误,我试过的。

追答

*(arr+x*sizeof(int))+y)

本回答被网友采纳
第4个回答  2012-10-24
int array[m][n];

func(int * arry[n])
{}

main()
{
func(array);

}
这样调用
相似回答