数组作为函数参数使用方法总结

C/C++数组作为函数参数使用方法总结

一维数组作为函数参数的三种方法:
方法1:形参与实参都用数组;
方法2:形参与实参都用对应数组的指针;
方法3:实参用数组名,形参用引用;

二维数组作为函数参数的四种方法:
C/C++语言中把二维数组看作1个特殊的一维数组,它的数组元素又是1个一维数组。二维数组的存储也是按照一维数组来处理的,二维数组按照行展开的方式按顺序存储;所以在利用二维数组作为参数传递时,必须指定二维数组的列数,否则函数无法勾画出二维数组的组织形式。只有有了列长度,通过下标array2D[i][j]时才能得到正确的下标地址。
方法1:在参数声明中指定二维数组的列数;
方法2:把参数声明为一个指向数组的指针;
方法3:把参数声明为指向指针的指针;
方法4:二维数组看成一维数组访问;

//一维数组作为函数参数的三种方法:
#include "iostream"

using namespace std;

//用类型定义语句定义一个int型的数组类型
typedef int arrayD[6];

//方法1:形参与实参都用数组
/*下面这两种写法等价,这里的数字“6”并没有什么卵用*/
void print1DArraay1(int array1D[], const int length );
void print1DArraay11(int array1D[6], const int length);

//方法2:形参与实参都用对应数组的指针
void print1DArraay2(int *array1D, const int length);
//注:方法1与方法2等价

//方法3:实参用数组名,形参用引用;
/*C++中经常使用这种调用方式;下面是等价的两种写法*/
void print1DArraay3(arrayD &array1D, const int length);
void print1DArraay32(int(&array1D)[6], const int length);

int main()
{
	int array1D[6] = {0,1,2,3,4,5};

	print1DArraay1(array1D, 6);
	print1DArraay2(array1D, 6);
	print1DArraay3(array1D, 6);
	print1DArraay32(array1D, 6);

	system("pause");
	return 0;
}

void print1DArraay1(int array1D[], const int length)
{
	for (int i = 0; i < length; i++)
	{
		printf("array1D[%d] = %d\n", i, array1D[i]);
	}
}

void print1DArraay2(int *array1D, const int length)
{
	for (int i = 0; i < length; i++)
	{
		printf("array1D[%d] = %d\n", i, *(array1D+i));
	}
}

void print1DArraay3(arrayD &array1D, const int length)
{
	for (int i = 0; i < length; i++)
	{
		printf("array1D[%d] = %d\n", i, array1D[i]);
	}
}

void print1DArraay32(int(&array1D)[6], const int length)
{
	for (int i = 0; i < length; i++)
	{
		printf("array1D[%d] = %d\n", i, array1D[i]);
	}
}
//二维数组作为函数参数的四种方法:
#include <iostream>

using namespace std;

//方法1:在参数声明中指定二维数组的列数
//srcData的声明看起来是一个二维数组,实际上形参是指向含有6个int的数组指针
void print2Darray1(int srcData[][6],const int rows, const int cols);

//方法2:把参数声明为一个指向数组的指针
//srcData指向数组的首元素,该数组由6个整数构成;所以方法1与方法2等价*/
void print2Darray2(int (*srcData)[6], const int rows, const int cols);

//方法3:把参数声明为指向指针的指针
void print2Darray3(int **srcData, const int rows, const int cols);

//方法4:二维数组看成一维数组访问
void print2Darray4(int *srcData, const int rows, const int cols);

int main()
{
	int array2D[2][6] = { { 0, 1, 2, 3, 4, 5 },{ 6, 7, 8, 9, 10, 11 } };

	//定义一个指针数组
	int *p[2] = { array2D[0],array2D[1] };

	print2Darray1(array2D, 2, 6);
	print2Darray2(array2D, 2, 6);
	print2Darray3(p, 2, 6);
	print2Darray4(array2D[0], 2, 6);
	system("pause");
	return 0;
}

void print2Darray1(int srcData[][6], const int rows, const int cols)
{
	for (int row = 0; row < rows;row++)
	{
		for (int col = 0; col < cols; col++)
		{
			printf("srcData[%d][%d] = %d\n",row,col, srcData[row][col]);
		}
	}
}

void print2Darray2(int (*srcData)[6], const int rows, const int cols)
{
	for (int row = 0; row < rows; row++)
	{
		for (int col = 0; col < cols; col++)
		{
			printf("srcData[%d][%d] = %d\n", row, col, srcData[row][col]);
		}
	}
}

void print2Darray3(int **srcData, const int rows, const int cols)
{
	for (int row = 0; row < rows; row++)
	{
		for (int col = 0; col < cols; col++)
		{
			printf("srcData[%d][%d] = %d\n", row, col, srcData[row][col]);
		}
	}
}

void print2Darray4(int *srcData, const int rows, const int cols)
{
	for (int row = 0; row < rows; row++)
	{
		for (int col = 0; col < cols; col++)
		{
			printf("srcData[%d] = %d\n", (row*cols + col), srcData[row*cols + col]);
		}
	}
}

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值