当前位置:  编程技术>c/c++/嵌入式

c++ 指针与引用的区别介绍及使用说明

    来源: 互联网  发布时间:2014-10-12

    本文导语:  指针与引用看上去完全不同(指针用操作符“*”和“->”,引用使用操作符“.”),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢? 首先,要...

指针与引用看上去完全不同(指针用操作符“*”和“->”,引用使用操作符“.”),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?

首先,要认识到在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。

“但是,请等一下”,你怀疑地问,“这样的代码会产生什么样的后果?”
代码如下:

char *pc = 0; // 设置指针为空值
char& rc = *pc; // 让引用指向空值

这是非常有害的,毫无疑问。结果将是不确定的(编译器能产生一些输出,导致任何事情都有可能发生)。应该躲开写出这样代码的人,除非他们同意改正错误。如果你担心这样的代码会出现在你的软件里,那么你最好完全避免使用引用,要不然就去让更优秀的程序员去做。我们以后将忽略一个引用指向空值的可能性。
因为引用肯定会指向一个对象,在C++里,引用应被初始化。
代码如下:

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

指针没有这样的限制。
代码如下:

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

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

void printDouble(const double& rd)
{
cout

    
 
 

您可能感兴趣的文章:

  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 大家说java没有指针,是好还是坏呢,为什么c++中
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 深入解析C++中的指针数组与指向指针的指针
  • JAVA中的引址和C++中的指针有什么区别??高手向教!!
  • C++中指向对象的常指针与指向常对象的指针详解
  • C++中返回指向函数的指针示例
  • c++函数指针和回调函数示例
  • c++里有函数指针,java里没有,如果我想实现这样的功能,该怎么做呢?请进。。。
  • C++指向函数的指针实例解析
  • C++中给二维指针分配内存(实现代码)
  • C++ 在堆上开辟与释放二维、三维指针详细解析
  • C++指向函数的指针用法详解
  • C++中指针和引用的区别分析
  • C++中用指向数组的指针作函数参数
  • c++传递函数指针和bind的示例
  • c++将引用或者是指针作为函数参数实现实参的运算
  • 基于C++ map中key使用指针问题的详解
  • c++函数中的指针参数与地址参数区别介绍
  • C++指针数组、数组指针、数组名及二维数组技巧汇总
  • c++函数指针使用示例分享
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • gcc编译CORBA程序如何关闭智能指针转换为普通指针的警告
  • 指向类成员函数的指针其实并非指针
  • 谁说java没指针,我觉得全是指针才对
  • 一个用指针传递内存的问题(如果传进去的是三重指针确不行)
  • busybox中的gzip运行过程中出现page fault错误,并指出出错的指针,但是怎么使用gdb调试,找到指针对应的语句?
  • 关于free指针的指针分量
  • C语言中常量指针与指针常量区别浅析
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 关于指针变量,struct 变量,指针使用的一些疑惑,望高手指教
  • 深入理解数组指针与指针数组的区别
  • 深入解析函数指针与返回函数的指针
  • 指向变量的常指针与指向常变量的指针详细解析
  • 结构指针类型强制转换
  • 请问return语句会执行哪些操作?在函数中return一个已分配内存的指针,该指针所占用的内存会释放吗?
  • 请问如何在linux (redhat)下传递一维数组指针?
  • C:函数指针
  • 利用函数指针的好处是什么?
  • 野指针问题
  • 关于指针的地址重的问题,求教了。
  • 深入const int *p与int * const p的区别详解(常量指针与指向常量的指针)




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3