C++传递二维数组参数

传递一维数组比较简单

定义函数:

void function1(int *p,int size);.//size是数组大小
另调用程序中定义有数组:

int a[5] = { 1, 2, 3, 4, 5 };
函数调用时如下:

function1(a, 5);

在被调函数中使用元素时*(a+i)表示的就是元素a[i]


----------------------------------------------------------------------------------------------------------------------------------------

二维数组就比较麻烦了

首先在调用函数中(主函数)定义二维数组:

int data[3][2] = { 1, 2, 3, 4, 5, 6 };
首先说在本函数(调用函数)中数组的索引方式:

要找第i行第j列的值

data[i][j]
或者定义指针,指向数组名

int(*pdata)[2] = data1;
cout << *(*pdata + 2) << endl;
这种方法是向后顺延,数组在内存中的排序是一行一行的向后展开的,要想寻址i行j的元素,需要自己手动算出此位置的一维索引值:i*列数+j  然后写在2那个位置即可

cout << *(*pdata + i*2+j) << endl;
i和j就是要寻址的元素,第i行,第j列,C++中行和列都是从0开始的


定义被调函数是,形参应该写

int **p
如下定义被调函数:

void function(int **p, int m, int n)//m行数,n列数
{
	int i(0), j(0);
	for (i = 0; i < m; i++)
	{
		for (j = 0; j < n; j++)
		{
			cout << *((int*)p + i*n + j)<<'\t';
		}
		cout << endl;
	}
	
}
调用时写法:

function((int **)data1, 3, 2);


在被调函数中寻址元素:

*((int*)p + i*n + j)

或者

p[i][j];//这种方式更具有一般性,使用方便













 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值