C++当函数的形参为数组时,函数对实参的修改有效,不用专门return来帮助我们修改实参

Posted 爱做梦的鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++当函数的形参为数组时,函数对实参的修改有效,不用专门return来帮助我们修改实参相关的知识,希望对你有一定的参考价值。

当函数的形参为引用或指针时,函数对实参的修改有效,不用专门return
当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。我们需要使用return来帮助我们修改实参。
而如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在函数体内部可以改变实参的值,我们不需要return

#include <iostream>
using namespace std;

void a(int b[2]);
int main() 
	int c[2] =  1,2 ;
	
	for (size_t j = 0; j < 2; j++)
		
			cout << c[j] << "  ";
		
	cout << endl;
	
	a(c);
	for (size_t j = 0; j < 2; j++)
		
			cout << c[j] << "  ";
		
	cout << endl;


void a(int b[2]) 
	for (size_t j = 0; j < 2; j++) 
		b[j] = 0;
	

#include <iostream>
using namespace std;
void a(int b[][2]);
int main()
	int c[2][2] = 1,2,3,4;
	for (size_t i = 0; i < 2; i++)
	
		for (size_t j = 0; j < 2; j++)
		
			cout << c[i][j]<<"  ";
		
		cout << endl;
	
	a(c);
	for (size_t i = 0; i < 2; i++)
	
		for (size_t j = 0; j < 2; j++)
		
			cout << c[i][j] << "  ";
		
		cout << endl;
	


void a(int b[][2]) 
	for (size_t i = 0; i < 2; i++)
	
		for (size_t j = 0; j < 2; j++)
		
			b[i][j] = 0;
		
	

以上是关于C++当函数的形参为数组时,函数对实参的修改有效,不用专门return来帮助我们修改实参的主要内容,如果未能解决你的问题,请参考以下文章

什么是函数的参数传递呢??它有几种呢?

疑问C++结构体(数组)指针作为函数参数,会不会修改实参的值?

用指针引用或直接传值来分配内存

c++,类的对象作为形参时一定会调用复制构造函数吗?

调用函数时为啥形参的值不能传给实参

关于函数形参