美文网首页
c++学习记录4(GeekBand)

c++学习记录4(GeekBand)

作者: shenhua8369 | 来源:发表于2016-06-05 18:39 被阅读0次

这次的学习点比较多,也不打算一一记录了,就来说说对于我这个刚刚接触c++比较头疼的指针和引用吧。

一.相同点:

指针指向一块内存。这里面储存的是指向内存的地址。而引用,看起来有些不一样。但是实现上也是用了指针。它是某块内存的别名。

ps:说起来有些拗口。简单理解起来就是两个都是指针。不过引用是比较漂亮的指针。、

二.区别:

1. 指针是一个实体,而引用仅是个别名;

2. 引用使用时无需解引用(*),指针需要解引用;

3. 引用只能在定义时被初始化一次,之后不可变;指针可变;(2和3其实是相关的。因为引用只能初始化一次,下次使用=赋值的时候,改变的是引用对象的值,所以无需解引用。);

4. 引用没有 const,指针有 const,const 的指针不可变;

5. 引用不能为空,指针可以为空;

6. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;

typeid(T) == typeid(T&) 恒为真,sizeof(T) == sizeof(T&) 恒为真,但是当引用作为成员时,其占用空间与指针相同(没找到标准的规定)。

7. 指针和引用的自增(++)运算意义不一样;

三.使用

通常来说引用用在函数参数类型和返回参数之中。

(下面借用下课堂ppt)

下面是一个需要注意的地方:

int i = 5;

int j = 6;

int& k = i;

k = j; 

猜猜k和i的值是多少?

他们的值都是6;

因为k这个引用再次赋值的时候,是它引用的i的值被赋值了,而不是改变k引用的对象。所以这里改变k的值,就是 改变i的值,所以都是6.

最后说一句,因为引用的传递速度快 ,所以函数传参的时候,能够使用引用的,尽量使用引用。

ok,这次就到这里。后面继续。

相关文章

  • c++学习记录4(GeekBand)

    这次的学习点比较多,也不打算一一记录了,就来说说对于我这个刚刚接触c++比较头疼的指针和引用吧。 一.相同点: 指...

  • monolake 的GeekBand C++开发学习笔记(一)

    前记:开始第一课GeekBand C++开发工程师课程的学习,同时也开始写自己的第一篇C++笔记博客,记录下自己的...

  • c++学习记录7(GeekBand)

    这周的课程将容器讲完了。自己来总结下容器的东西。 参考:STL源码分析 (一)vector容器 vector的数据...

  • c++学习记录5(GeekBand)

    说说new的六种重载形式: 全局的new有六种重载形式, void *operator new(std::size...

  • c++学习记录6(GeekBand)

    这周作业是和vector有关的,就找了找vector相关的内容。如下: vector是C++标准模板库中的部分内容...

  • c++学习记录8(GeekBand)

    这周的课讲了将泛型算法。现在将泛型算法收集下,备用。 (1)泛型算法用迭代器来解决第一个要求:遍历容器。所有迭代器...

  • c++学习记录9(GeekBand)

    聊聊观察者模式 先前用过一些语言,比如js,as之类。这些语言里面很常见的就是事件。一个对象发生变化,可以通过事件...

  • c++学习记录10(GeekBand)

    这周课程继续设计模式。这里选出来最常用的工厂模式来说说。 先来说说,工厂模式使用的场景: 1.当你遇到需要创建的对...

  • c++学习记录12(GeekBand)

    这周的课听得有些迷糊,现在记录下,以备后面查看。 七剑客: 1.同步 2.网络 http1.0和http1.1的区...

  • c++学习记录11(GeekBand)

    Composite组合模式 作用: 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户...

网友评论

      本文标题:c++学习记录4(GeekBand)

      本文链接:https://www.haomeiwen.com/subject/isjrdttx.html