输入3个整数,按照升序输出

      要实现该功能,非常简单,但是这篇博客的目的是谈谈引用,练习引用。         

       引用是C++中的概念。引用既不是被引用物(referent)的拷贝,也不是指向被引用物(referent)的指针,引用其实就是它自己。引用的一些规则如下:

  • 引用被创建的同时必须初始化(指针可以在任时候被初始化)。
  • 不能有NULL引用,引用必须与合法的存储单元相关联(指针则可以是NULL)。
  • 一旦引用被初始化,就不能改变引用的关系(指针可以随时改变所指的对象)。

       在C++中,函数的参数和返回值的传递方式有三种:值传递、指针传递、引用传递

      实际上,引用传递能做到的任何事,指针也都能做到。为什么还需要引用?指针能够毫无约束地操作内存中的任何东西,功能强大,非常危险。引用的存在就是“用恰当的工具做恰如其分的工作”。

#include<stdio.h>
int main() {
	void my_swap(int &x, int &y);
	int n1, n2, n3;
	printf("input three integer n1,n2,n3:");
	scanf_s("%d,%d,%d", &n1, &n2, &n3);
	if (n1 > n2)
	{
		my_swap(n1, n2);
	}
	if (n1 > n3)
	{
		my_swap(n1, n3);
	}
	if (n2 > n3)
	{
		my_swap(n2, n3);
	}
	printf("Now,the ascending order is:%d,%d,%d\n", n1, n2, n3);
	return 0;
}

void my_swap(int &x, int &y)
{
	if (x > y)
	{
		int temp = x;
		temp = x;
		x = y;
		y = temp;
	}
}

   关于void my_swap(int &x, int &y);的实现,可以不用第三个临时变量,具体实现有一下两种办法:

  • 异或运算
void 
my_swap(int &x, int &y)
{
	if (x > y)
	{
		x = x ^ y;
		y = x ^ y;
		x = x ^ y;
	}
}

  • 数学公式
void 
my_swap(int &x, int &y)
{
	if (x > y)
	{
		x = x + y;
		y = x - y;
		x = x - y;
	}
}
本程序在VS2017下运行通过。

猜你喜欢

转载自blog.csdn.net/qq_41822235/article/details/80290123
今日推荐