2014秋C++第17周 项目2参考 引用作形参

简介: 课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。 【项目2-引用作形参】设计一个程序,输入3个整数,将其按从大到小的顺序输出,要求(1)排序功能通过函数实现,3个整数用3个变量,不必定义数组;(2)写出两个版本的函数,一个采用传地址值的方法,另一个
课程主页在 http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在 云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。 


【项目2-引用作形参】
设计一个程序,输入3个整数,将其按从大到小的顺序输出,要求
(1)排序功能通过函数实现,3个整数用3个变量,不必定义数组;
(2)写出两个版本的函数,一个采用传地址值的方法,另一个采用引用类型作参数


参考解答:

  在函数调用时,实参的值要传递给形参。当形参是指针时,实参也是指针。形参与实参占用不同的内存空间,但通过传值(传地址值),指向的是同一内存单元。当形参指向的单元的值发生变化,也就是实参指向的空间的变化。
  利用指针变量作形参,实现了用调用函数的方法,改变实参的值的目的。

#include <iostream>
using namespace std;
int main( )
{
	void sort(int *,int *,int *); 
	int a=2,b=4,c=3; 
	sort(&a,&b,&c); 
	cout<<"sorted order is "<<a<<" "<<b<<" "<<c<<endl;
	return 0;
}

void sort(int *i,int *j,int *k)      
{ 
	int t;	       
	if (*i>*j) {t=*i;*i=*j;*j=t;}
	if (*i>*k) {t=*i;*i=*k;*k=t;}
	if (*j>*k) {t=*j;*j=*k;*k=t;}
}

  用引用类型作为形参,由于形参与实参实质上就是同一个变量,占用的是同一段内存空间,对形参的改变,实质就是对实参的改变。因此,排序函数中完成的形参的变化,使得在函数调用完后,实参也发生了变化。
  用引用类型作为形参,效果上可以达到传地址值相同的效果,但程序的可读性更好了,更易于理解了。

#include <iostream>
using namespace std;
int main( )
{
	void sort(int &,int &,int &); 
	int a=2,b=4,c=3; 
	sort(a,b,c); 
	cout<<"sorted order is "<<a<<" "<<b<<" "<<c<<endl;
	return 0;
}

void sort(int &i,int &j,int &k)      
{ 
	int t;	       
	if (i>j) {t=i;i=j;j=t;}
	if (i>k) {t=i;i=k;k=t;}
	if (j>k) {t=j;j=k;k=t;}
}





=================== 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====

目录
相关文章
WK
|
1月前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
86 1
|
2月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
573 3
|
3月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
57 3
|
5月前
|
存储 安全 C++
浅析C++的指针与引用
虽然指针和引用在C++中都用于间接数据访问,但它们各自拥有独特的特性和应用场景。选择使用指针还是引用,主要取决于程序的具体需求,如是否需要动态内存管理,是否希望变量可以重新指向其他对象等。理解这二者的区别,将有助于开发高效、安全的C++程序。
39 3
|
5月前
|
Rust 测试技术 编译器
Rust与C++的区别及使用问题之Rust项目中组织目录结构的问题如何解决
Rust与C++的区别及使用问题之Rust项目中组织目录结构的问题如何解决
|
5月前
|
存储 自然语言处理 编译器
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
|
4月前
|
编译器 C++ 开发者
Visual Studio属性表:在新项目中加入已配置好的C++库
通过以上步骤可以确保Visual Studio中新项目成功地加入了之前已配置好的C++库。这个过程帮助开发者有效地管理多个项目中共享的库文件,提升开发效率。
128 0
|
6月前
|
存储 安全 编译器
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
71 5
|
6月前
|
C++
C++引用
C++引用
|
5月前
|
C++
C++基础知识(二:引用和new delete)
引用是C++中的一种复合类型,它是某个已存在变量的别名,也就是说引用不是独立的实体,它只是为已存在的变量取了一个新名字。一旦引用被初始化为某个变量,就不能改变引用到另一个变量。引用的主要用途包括函数参数传递、操作符重载等,它可以避免复制大对象的开销,并且使得代码更加直观易读。