二维数组作为参数在函数中传递

首先,void f(a[ ][ ]);是不正确的定义

二维数据作为函数参数时,要明确指明二维数组的列数,这样编译器才能知道如何寻址。

正确的方式有: void f (a[4][6]);

void f(a[ ][6]);//二维数组的行数可以省略

另外,也不能用非常量定义二维数组作为其下标。

void f ( a[m][n]);是严重错误的;


正确的应用模式一

void func1(int iArray[ ][10])
{

}

int main()
{
int array[10][10];
func1(array);

}

正确的应用模式二(应用一维指针数组作为参数)

void func2(int (*pArray)[10])
{

}

void func2_1(int (*pArray)[ ]) //编译通过,无法调用
{

}


int main()
{
int array[10][10];
func2(array);
}

正确的应用模式三(应用二维数组引用作为参数)

void func3(int (&pArray)[10][10])//在此必须指明二个维数
{

}

int main()
{
int array[10][10];
func3(array);
}


正确的应用模式四(应用二维指针数组作为参数)

void func4(int (*pArray)[10][10])//必须指定二个维数
{

}

int main()
{
int array[10][10];
func4(&array);

}


注:以上四种方法通用,但是数组传递时,仅传值,对传入参数不做改变


补充:应用二重指针作为形参,传入的实参也必须是二重指针,巧妙地利用new分配内存空间,可以用非常量定义

void func5(int** pArray, int m, int n)
{

}

#include <ctime>
int main()
{
int m = 10;
int n = 10;

int** pArray = new int* [m];
pArray[0] = new int[m * n];
// 分配连续内存,动态创建二维数组

// 用pArray[1][0]无法寻址,还需指定下标寻址方式
for(int i = 1; i < m; i++)
{
pArray[i] = pArray[i-1] + n;
}

func5(pArray, m, n);
}





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值