C++数组作为函数参数

  • Post author:
  • Post category:其他


记录学习过程8

1.数组元素作为函数参数————值传递形式

#include <iostream>

using namespace std;

int func(int n);
int main()
{
	int a[5] = { 1,5,7,9,17 };
	cout << "数组元素作为函数实参进行传递后的结果:" << endl;
	for (int i = 0; i < 5; i++)
	{
		a[i] = func(a[i]);          //转到函数func()进行计算
		cout << a[i] << endl;
	}
	return 0;
}

int func(int n)
{
	n *= n;
	return n;
}
数组元素作为函数实参进行传递后的结果:
1
25
49
81
289

2.数组名作为函数实参————地址传递参数形式

#include <iostream>

using namespace std;

void func(int array[],int n);
int main()
{
	int a[5] = { 1,5,7,9,17 };
	cout << "数组元素作为函数实参进行传递后的结果:" << endl;
	func(a,5);
	for (int i = 0; i < 5; i++)
	{
		cout << a[i] << endl;

	}
		
	return 0;
}

void func(int array[],int n)
{
	for (int j = 0; j < n; j++)
		array[j] *= array[j];
	
}
数组元素作为函数实参进行传递后的结果:
1
25
49
81
289

//复制于’Ecalpal’网友的补充:

C++数组作为函数参数传递的两种方法,数组元素作函数参数的方法不return就会报错,数组名作函数的却不会是为什么?

1.函数定义一般以

返回类型 函数名(形参){};

形式出现,int func(int a,int b) {}这样的是有返回值有形参,这种函数存在的意义是外部有变量要传递进来做处理。

我的理解是调用该函数的时候,会为函数的形参分配内存,函数调用结束后,形参的内存会被释放,所以要return。

2.实参变量对形参变量的数组传递是值传递,是单向的,不能形参传给实参;

但是数组名作为函数参数时,实际上是地址传递,不是值传递,会把实参数组的首地址传递给形参,这样实参和形参地址指向就一样了,所以可以理解为双向传递,与普通变量的差别就在此。



版权声明:本文为dgpikaqiu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。