C和C++中:值传递的缺陷用引用传递地址传递来解决

Posted zhangjin1120

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C和C++中:值传递的缺陷用引用传递地址传递来解决相关的知识,希望对你有一定的参考价值。

值传递

#include <stdio.h>
void swap(int x,int y)
	int temp=x;
	x=y;
	y=temp;
	printf("x=%d, y=%d\\n",x,y);


int main() 
	int a=3,b=5;
	swap(a,b);
	printf("a=%d, b=%d",a,b);
	return 0;

运行结果:

x=5, y=3
a=3, b=5

显然,这是不符合预期的,怎么实现数值交换了?

引用传递(C++)

引用传递,不涉及指针。
下面的代码需要保存为.cpp格式,.c格式会报错!

#include <stdio.h>
void swap(int &x,int &y)
	int temp=x;
	x=y;
	y=temp;
	printf("x=%d, y=%d\\n",x,y);


int main() 
	int a=3,b=5;
	swap(a,b);
	printf("a=%d, b=%d",a,b);
	return 0;

运行结果

x=5, y=3
a=5, b=3

另外一种解决方式,就是地址传递。

地址传递

下面的代码保存为.c文件,就可以了。c语言中的重点就是指针。

#include <stdio.h>
void swap(int *x,int *y)
	int temp=*x;
	*x=*y;
	*y=temp;
	printf("*x=%d, *y=%d\\n",*x,*y);


int main() 
	int a=3,b=5;
	swap(&a,&b);
	printf("a=%d, b=%d",a,b);
	return 0;

运行结果:

*x=5, *y=3
a=5, b=3

以上是关于C和C++中:值传递的缺陷用引用传递地址传递来解决的主要内容,如果未能解决你的问题,请参考以下文章

C语言有引用传递吗

C++中函数参数的传递方式有哪几种

C语言中的参数传递方式都有哪些

值传递和引用传递怎么理解?

在C语言中,函数实参与形参之间的数据传递方式是( )传递方式。

abap 值传递 引用传递