c++ 向子函数传递数组

向子函数传递一个数组时,数组是不会被拷贝的,一般来说都是传地址给子函数而已。

怎么规范地向子函数传递数组呢,一般来说,我们会给定数组地址,然后告诉子函数数组的长度之类的。

利用函数模板,可以实现不需告诉子函数数组长度,也能安全地使用数组,使用的是非类型模板参数,编译器根据你给定的非类型模板参数,自行推断出对应的数组长度,这个方法更具有普适性。

下面是向子函数传递数组的几个基本用法:

#include <iostream>
using namespace std;

int test1(const double a[],const int *beg ,const int *end)
{ 
	/* 对数组的操作 */
	return 0;
}

int test2(const double(&arr)[], const int *beg, const int *end)
{ 
	/* 对数组的操作 */
	return 0;
}

int test3(const double(&arr)[5])
{ 
	/* 对数组的操作 */
	return 0;
}

template<int N, int M >
int test4( const char (&Arr)[N] , const char (&Brr)[M])
{ 
	/* 对数组的操作 */
	return 0;
}

int main()
{ 
	double Arr[5] = {  1,2,3,4,5 };

	cout << end(Arr) - begin(Arr) << endl;
	cout << begin(Arr) << endl;
	cout << end(Arr) << endl;


	return 0;
}


    原文作者:wx_polish
    原文地址: https://blog.csdn.net/CxC2333/article/details/109399615
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞