C++值传递传入和传出详细讲解

我们知道,通常我们定义的函数很多都是带参数的,用来传入和传出数据,下面,我将举例来演示传入传出过程。

1.无传入,无传出

class Cout{
public:
	static int x;
	static int y;
	int add();
};
int Cout::x=5;
int Cout::y=6;
int Cout::add()
{
	int z=x+y;
	return z;
}
int main()
{
	Cout c;
	cout<<c.add()<<endl;
}

结果:
在这里插入图片描述
分析:这是计算类中的两个静态成员变量,我们并没有在add函数中进行传递参数,也可以获得结果。

2.有传入,无传出

int Add(int x,int y)
{
	return x+y;
}
int main()
{
	cout<<Add(1,2)<<endl;
}

结果:
在这里插入图片描述
分析:这是一个简单的加法函数,只将参数传入函数,不传出参数,但是我们可以通过return获取需要的结果。

3.无传入,有传出

class Send{
public:
	bool A(char* a);
	bool B(char* b);
};
bool Send::B(char* c)
{
	char b[4]="aaa";
	strcpy(c,b);
	return true;
}

bool Send::A(char* a)
{
	if(this->B(a))
		return true;
	return true;
}

int main()
{
	Send send;
	char k[5];
	send.A(k);
	cout<<k<<endl;
}

结果:
在这里插入图片描述
分析:定义了Send类其中有两个函数A和B,B的作用是将字符串"aaa"的地址拷贝到c地址中,A的作用是调用B函数
当执行send.A(k)时,进入A函数,此时a为k,调用B函数B(a)=B(k),进入B函数,此时,c为k,strcpy(c,b)为strcpy(k,b),此时k为"aaa",A函数此时可以获取k的值。

4.有传入,有传出

class Send{
public:
	bool A(char*b,char* c);
	bool B(char* c,char* d);
};
bool Send::B(char* c,char* d)
{
	strcpy(c,d);
	return true;
}
bool Send::A(char* a,char* c)
{
	if(this->B(a,c))
		return true;
	return true;
}
int main()
{
	Send send;
	char k[5];
	send.A(k,"AAA");
	cout<<k<<endl;
	return 0;
}

结果:
在这里插入图片描述

分析:以上为第三种情况的拓展,定义了Send类,其中有两个函数,A()和B(),B函数的作用是将地址d中的字符串拷贝到c地址中,A函数的作用是传入字符串的地址且传入B函数中。

可能有点难理解

分步为:
当我们send.A(k,“AAA”)时,首先进入函数A
此时函数A中的c就成了"AAA",然后调用B函数为B(k,“AAA”)
再进入B函数,此时,B函数中的c和d为 k和"AAA"
然后strcpy(c,d);就是strcpy(k,“AAA”),这时,k=“AAA”。
我们调用完后,可以获取k的值。

看完本篇文章,大家是否对值的传入和传出有更深的认识呢。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/baidu_41191295/article/details/112549399