指针和引用的差别?

     (1)非空区别。在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某个对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,列如你的设计不允许变量为空,这时你应该把变量声明为引用。不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针要高。

      (2)合法性区别。在引用之前不需要测试它的合法性。相反,指针应该总是被测试,防止其为空。

      (3)可修改区别。指针和引用的另一个重要的区别是指针可以被重新赋值以指向另一个不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变,但是指定的对象其内容可以改变。

      (4)应用区别。总的来说,在以下情况使用指针:一是考虑到存在不指向任何对象的可能(在这种情况下,能够设置指针为空),二是需要能够在不同的时刻指向不同的对象(在这种情况下,你能改变指针的指向)。如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么应该使用引用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,132评论 1 32
  • C++是在C语言的基础上发展来的。C++除了有C语言的指针外,还增加一个新的概念——引用,初学者容易把引用和指针混...
    萧潇公举阅读 8,577评论 1 5
  • 307、setValue:forKey和setObject:forKey的区别是什么? 答:1, setObjec...
    AlanGe阅读 1,576评论 0 1
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,470评论 3 44
  • 从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其...
    IvanRunning阅读 379评论 0 1