• 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++指针语法csdn,c++ 指针write,c++中指针的用法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

指针与引用是C++中两个很重要的概念,它们功能看过去很相似,就是都是间接引用某个对象,那么我们应该在什么时候使用指针,什么时候使用引用呢,下面请允许我慢慢道来:

1.永远不要使用一个指向空值的引用。一个引用必须始终指向某个对象,所以当你确定使用一个变量指向某个对象时,但是这个对象在某些时间可能指向控制,这时候你就必须把变量声明为指针类型,而不是引用!当你确定这个变量始终指向某个对象是,这时候你就可以把变量声明为引用类型。

char *str=0; //设置指针为空值
char &s=*str; //让引用指向空值
</div>

你应该避免出现上面的错误!

2.因为引用肯定要指向一个对象,所以,在C语言里引用必须被初始化。

string& rs;   // 错误引用必须被初始化
string s("xyzzy");
string& rs = s; // 正确 rs指向s
</div>

指针没有这样的限制:

string *ps; // 未 初 始 化 的 指 针
      // 合 法 但 危 险
</div>

3.不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高,因为在使用引用之前不需要测试它的合法性。

void printDouble(const double& rd)
{
   cout << rd;  // 不需要测试rd,它
}          // 肯定指向一个double值
</div>

相反指针则应该总是被测试防止其为空:

void printDouble(const double *pd)
  {
    if (pd) {  // 检查是否为NULL
      cout << *pd;
    }
  }
</div>

4.指针与引用的另一个重要的不同是指针可以被重新赋值以指向另一个不同的对象,但是引用则总是指向在初始化时被指定的对象以后不能改变。

string s1("Nancy");
  string s2("Clancy");
  string& rs = s1; // rs 引用s1
  string *ps = &s1; // ps 指向s1
  rs = s2; // rs 仍旧引用s1,
      // 但是s1的值现在是
      // "Clancy"
  ps = &s2; // ps 现在指向s2;
       // s1 没有改变
</div>

5.重载某个操作符时你应该使用引用。最普通的例子是重载操作符[]。这个操作符典型的用法是返回一个目标对象其能被赋值。

总的来说在以下情况下你应该使用指针:

一是你考虑到存在不指向任何对象的可能,在这种情况下你能够设置指针为空;

二是你需要能够在不同的时刻指向不同的对象,在这种情况下你能改变指针的指向。

如果总是指向一个对象,并且一旦指向一个对象后就不会改变指向,那么你应该使用引用。

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

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

  • 简单谈谈C++中指针与引用的区别
  • C++中指针和引用的区别详解
  • C++基础入门教程(九):函数指针之回调
  • C++基础入门教程(八):函数指针
  • C++指向函数的指针用法详解
  • C++指向函数的指针实例解析
  • c++中引用和指针的区别和联系
  • C++中指针和引用的区别分析
  • C++中给二维指针分配内存(实现代码)
  • C++中引用的使用总结

相关文章

  • 2017-05-28数据结构顺序表操作示例
  • 2017-05-28LintCode-排序列表转换为二分查找树分析及实例
  • 2017-05-28c++连接mysql数据库的两种方法(ADO连接和mysql api连接)
  • 2017-05-28实例讲解C++编程中lambda表达式的使用
  • 2017-05-28C语言中判断int,long型等变量是否赋值的方法详解
  • 2017-05-28c++中临时变量不能作为非const的引用参数的方法
  • 2017-05-28libxml教程(图文详解)
  • 2017-05-28探讨:C++中函数返回引用的注意事项
  • 2017-05-28四叉树有损位图压缩处理程序示例
  • 2017-05-28简要对比C语言中三个用于退出进程的函数

文章分类

  • 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之旅开始了)[九]
    • 用C++实现DBSCAN聚类算法
    • c语言实现系统时间校正工具代码分享
    • C++ COM编程之什么是组件?
    • C语言与JAVA的区别是什么(推荐)
    • 深入分析C++中两个大数相乘结果不正确的问题
    • C语言实现杨辉三角实例
    • 共用体的定义与应用详细解析

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

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