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++中:值传递的缺陷用引用传递地址传递来解决的主要内容,如果未能解决你的问题,请参考以下文章