二维数组作为函数参数——代码

#include<iostream>
#include<cstdio>
#define NROWS 3
#define NCOLUMNS 4
using namespace std;

void func1(int **arr,int m, int n)
{
	int i,j;
	for (i=0; i<m; i++)
		for (j=0; j<n; ++j)
		{
			printf("arr[%d][%d] = %d\n", i, j, *((int*)arr + i*n+j));  //注意,此处为*(*arr + i*n+j) 则失败
//      	cout << "use func1,arr[1][2]="<< arr[1][2] << endl; //错误的

		}
}

void func2(int arr[][NCOLUMNS], int m, int n)
{
	int i,j;
	for (i=0; i<m; i++)
		for (j=0; j<NCOLUMNS; ++j)
		{
	//		printf("arr[%d][%d] = %d\n", i, j, *((int*)arr + i*NCOLUMNS+j)); //可以
	//		printf("arr[%d][%d] = %d\n", i, j, arr[i][j]); //可以
			printf("arr[%d][%d] = %d\n", i, j, *(*(arr+i)+j)); //可以

		}
}
void func3(int (*p)[NCOLUMNS], int m, int n)
{ //int (*p)[NCOLUMNS]与int arr[][NCOLUMNS]是等价的
	int i,j;
	for (i=0; i<m; i++)
		for (j=0; j<NCOLUMNS; ++j)
		{
		//	printf("p[%d][%d] = %d\n", i, j, *(*(p+i)+j)); //也是可以的!!
		//	printf("arr[%d][%d] = %d\n", i, j, *((int*)p + i*NCOLUMNS+j));//也是可以的!!
			printf("p[%d][%d] = %d\n", i, j, p[i][j]);
		}
}

void func4(int *p, int m, int n)
{
	int i,j;
	for (i=0; i<m; i++)
		for (j=0; j<n; ++j)
			printf("arr[%d][%d] = %d\n", i, j, *(p+i*n+j));

}

int main()
{
	int a[NROWS][NCOLUMNS] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
	func1((int**)a, 3, 4);
	func2(a, 3, 4);
	func3(a, 3, 4);
	func4((int*)a, 3, 4);
	return 0;
}//end main

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值