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

Posted u012507022

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组作为函数参数使用方法总结相关的知识,希望对你有一定的参考价值。

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]);
		
	

 

 

以上是关于数组作为函数参数使用方法总结的主要内容,如果未能解决你的问题,请参考以下文章

C语言指针学习总结

JavaScript中的Function类型总结

reduce方法使用总结

js中filter过滤用法总结

数组部分总结

426C 传递数组给函数