zl程序教程

您现在的位置是:首页 >  后端

当前栏目

《C和C++代码精粹》——2.4 传引用语义

C++代码 引用 2.4 语义 精粹
2023-09-11 14:17:38 时间

本节书摘来自异步社区出版社《C和C++代码精粹》一书中的第2章,第2.4节,作者: 【美】Chuck Allison,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.4 传引用语义

C和C++代码精粹
除非被告知用别的方法,否则C++总是通过值向函数传递参数。这意味着函数是局部地使用了每一个参数的拷贝。这种传递方式的结果是一个函数不可能在所调用的程序中改变对应的实参值。考虑下面的试图交换两个整型变量值的程序段:

void swap(int x, int y) 

 int temp = x; 

 x = y; 

 y = temp; 

诸如swap(a,b)这样的调用对于a和b都不会产任何效果。在退出函数后允许改变函数固定实参值的方式叫做“传递引用”。

程序清单2.6 用指针交换函数中实参的值

// swap2.cpp: 一个有用的交换函数 

#include iostream 

using namespace std; 

void swap(int*, int*); 

main() 

 int i = 7, j = 8; 

 swap( i, 

 cout "i == " i ", j == " j endl; 

void swap(int* xp, int* yp) 

 int temp = *xp; 

 *xp = *yp; 

 *yp = temp; 

//输出: 

i == 8, j == 7

在C语言中,可以通过传递想要改变其值的参数的指针来仿真传引用语义。可以通过指针,改变在调用程序中的变量值(参见程序清单2.6)。传递引用对于大型对象和在面向对象系统中是很普通的,在面向对象操作中,指向一个对象的指针称为“句柄”。正如第1章中所解释的那样,通过引用,C++也直接支持传递引用。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。


【奇妙的数据结构世界】用图像和代码对堆栈的使用进行透彻学习 | C++ 简单来说,数据结构是一种辅助程序设计并且进行优化的方法论,它不仅讨论数据的存储与处理的方法,同时也考虑到了数据彼此之间的关系与运算,从而极大程度的提高程序执行的效率,减少对内存空间的占用等。不同种类的数据结构适用于不同的程序应用,选择合适正确的数据结构,可以让算法发挥出更大的性能,给设计的程序带来更高效率的算法。
【奇妙的数据结构世界】用图像和代码对队列的使用进行透彻学习 | C++ 简单来说,数据结构是一种辅助程序设计并且进行优化的方法论,它不仅讨论数据的存储与处理的方法,同时也考虑到了数据彼此之间的关系与运算,从而极大程度的提高程序执行的效率,减少对内存空间的占用等。不同种类的数据结构适用于不同的程序应用,选择合适正确的数据结构,可以让算法发挥出更大的性能,给设计的程序带来更高效率的算法。
【奇妙的数据结构世界】用图像和代码对链表的使用进行透彻学习 | C++ 简单来说,数据结构是一种辅助程序设计并且进行优化的方法论,它不仅讨论数据的存储与处理的方法,同时也考虑到了数据彼此之间的关系与运算,从而极大程度的提高程序执行的效率,减少对内存空间的占用等。不同种类的数据结构适用于不同的程序应用,选择合适正确的数据结构,可以让算法发挥出更大的性能,给设计的程序带来更高效率的算法。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。