• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++中引用的使用总结

C++中引用的使用总结

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++ 类引用,c++ 引用 指针,c++引用,c++引用和指针的区别,c++引用的理解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1引用的定义

引用时C++对C的一个重要的扩充,引用的作用是给变量起一个别名。

例如:

int a;

int &b=a;//声明b是a的引用

经过以上的声明,b就成为了a的别名,a和b的地位以及作用都是一样的。

将b声明为a的引用,不需要再为b开辟新的单元,b和a在内存中占同一存储单元,它们具有相同的地址。

在程序中,

声明了b是a的引用,然后输出b=10;

然后使a的值减小5,再输出b=5,说明b会随着a的变化做出变化;

然后使b的值减小1,再输出a=4,说明a会随着b的变化做出变化。

在声明一个引用的同时,必须同时对它进行初始化,即声明它代表哪一个变量。在声明变量b是变量a的引用后,就可以将b作为a的别名来进行操作,并且b不能再作为其他变量的引用(别名)。

声明引用,而不进行初始化操作:

已经申明p为a的引用之后,在声明p为b的引用


注意区分:

int &b=a;表示b是a的引用

int *b=&a;表示b是指针变量,并且b的值是a的地址

引用不是一种独立的数据类型,必须指定其代表的某一类实体(如变量,类对象),不能定义引用数组,不能定义指向引用的指针,也不能定义指针的引用。

2 引用作为函数的参数

C++增加引用机制,主要是把它作为函数参数,以扩充函数传递数据的功能。

函数的参数传递有三种情况

将变量名作为形参和实参

这是传给形参的是变量的值,传递是单向的。如果在执行被调用函数期间,形参的值发生变化,是不能反映到实参的。因为形参只是复制了实参的数值,两变量并不是占用同一存储单元。

将变量地址作为实参,指针作为形参

这种方式仍然是值传递的方式,不过他传递的不是变量的数值,而是变量的地址。因此可以在被调用函数中,通过调用指针指向的变量来改变相应变量的值。

因为是值传递,所以只改变指针的值,而不去改变指向的变量的值,还是不能改变相应的变量的值。

将变量名作为实参,引用作为形参

将变量名作为形参和实参和将变量地址作为实参,指针作为形参都是采用的值传递的方式。而引用作为形参的时候,采用的是地址传递的方式。

在函数change的形参中声明了a,b是整形变量的引用。当main函数调用change函数时,把实参i的地址传递给形参x,把实参j的地址

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++ 类访问控制的条件总结
  • C++实现日期类(Date类)的方法
  • C++简单集合类的实现方法
  • 深入解读C++中的右值引用
  • 解析C++中的5个存储类的作用
  • 深入解析C++编程中类的封装特性
  • C++中引用的使用总结
  • C++嵌套类与局部类详细解析

相关文章

  • 2017-05-28VC中CWinThread类以及和createthread API的区别分析
  • 2017-05-28尾递归详细总结分析
  • 2017-05-28VC++实现文件与应用程序关联的方法(注册表修改)
  • 2017-05-28实现opencv图像裁剪分屏显示示例
  • 2017-05-28基于大端法、小端法以及网络字节序的深入理解
  • 2017-05-28C++中sprintf使用的方法与printf的区别分析
  • 2017-05-28C++ new、delete(new[]、delete[])操作符重载需要注意的问题
  • 2017-05-28使用C语言来解决循环队列问题的方法
  • 2017-05-28C++ 如何用cout输出hex,oct,dec的解决方法
  • 2017-05-28C++中关于Crt的内存泄漏检测的分析介绍

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言程序的错误和警告
    • 使用C语言递归与非递归实现字符串反转函数char *reverse(char *str)的方法
    • 解析C++中虚析构函数的作用
    • 浅析C语言中的sizeof
    • 在Linux下编译C或C++程序的教程
    • C语言运算符及其优先级汇总表口诀
    • C语言中经socket接收数据的相关函数详解
    • C语言实现返回字符串函数的四种方法
    • C语言之单向链表详解及实例代码
    • c++传递函数指针和bind的示例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有