数组做参数,值传递和引用传递

#include 
using namespace std;
#include //(1)只要涉及string打印输出要加此文件!!!

template<typename T>
void myprint(T * arr,int len)//(3)数组做参数,引用传递传参
{
	for (int i = 0; i < len; i++)
	{
		cout << arr[i] << endl;//(2)注意:数组做函数参数---无论是值传递还是引用传递,函数里边对数组的操作 写法形式 都一样!!!都是arr[i]!!!
	}
}
template<typename T>
void myprint1(T arr[], int len)//(3)数组做参数,且值传递传参
{
	for (int i = 0; i < len; i++)
	{
		cout << arr[i] << endl;//(2)注意:数组做函数参数---无论是值传递还是引用传递,函数里边对数组的操作 写法形式 都一样!!!都是arr[i]!!!
	}
}
int main()
{
	char Array[] = "defabc";
	int len = sizeof(Array) / sizeof(Array[0]);
	//myprint(arr1[6], len);//(1)错误!数组作为函数参数时,无论是值传递还是引用传递,都是直接单单写一个数组名!!!!!!!!!!
	myprint(Array len);
	//myprint1(arr1[6], len);//(1)错误!数组作为函数参数时,无论是值传递还是引用传递,都是直接单单写一个数组名!!!!!!!!!
	myprint1(Array, len);
	system("pause");
	return 0;
}

//注意:(1)数组作为函数参数时,无论!是值传递还是引用传递,都是直接单单写一个数组名!!!
(2)注意:数组做函数参数—无论是值传递还是引用传递,函数里边对数组的操作 写法形式 都一样!!!都是arr[i]!!!—就是数组该怎么操作怎么操作!(本质区别只是引用传递操作了实参本身,值传递只是在操作实参的一个副本!)
(3)注意数组做参数是,形参的写法------
a.引用传递: 数据类型 * arr
b.值传递 : 数据类型 arr[ ]
(4)函数参数引用传递形式:
a.对于函数定义void myprint(T * arr,int len)—就是类型后面带上星花,如T *
b.对于函数调用:
如果是数组-----直接单单只写一个数组名!(因为数组名本身就是地址)
如果是其他-----就要写成&A。取地址!

你可能感兴趣的:(数组做参数,值传递和引用传递)