C++学习笔记-1:指针和引用

Posted 汽车人的编程小屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++学习笔记-1:指针和引用相关的知识,希望对你有一定的参考价值。

        因为工作上的一些调整,我最近又得开始搞C++了。


        以前做ios的时候要学Objective-C,会从C语言学起,不过学会一点C的基础之后,就开始按定式编程了,不需要太深入。这次的工作不一样,要审查别人的代码,避坑。所以还得把基础打牢些,思前想后,决定从之前没有理解得很透彻的指针开始。




一、指针是什么,引用又是什么?



C++学习笔记-1:指针和引用


        用一张图来说明将会更直观一点:

C++学习笔记-1:指针和引用

图1-指针变量p的解析


        搞清楚了指针(*)是什么,下面来说说引用(&)是什么。


C++学习笔记-1:指针和引用

图2-引用变量q的解析





二、再讨论讨论老师那句话


        在我举的例子中,可以很明显的发现,指针符号*和引用符号&出现在定义表达式和赋值表达式中,其含义是不一样的。我们可以归纳如下:

C++学习笔记-1:指针和引用

图3-符号的不同含义


        特别地,我们可以令(*p) = 1001,这样a的值也变成了1001,由此看来,(*p)也是a的一个别名。




三、其它注意事项


1、二级指针

图4-p和r的关系



2、指针和引用在使用时的一些区别

        在定义指针的时候,是可以不将其初始化的(我第一次知道还可以这么玩的时候也很惊讶):

        int *p;

        int a = 10;

        p = &a;


        虽然p可以先只定义,在使用前进行初始化,但是写代码的时候不建议这么做(毕竟你在确定了某个对象之后,才需要用指针指向它)。

        不过对于引用,这么做是会报错的,必须在定义时立即初始化。

        int &q = a;

        

        但是定义引用时,没有新的内存空间产生,如果不把q初始化,那么q就没有意义。因此定义引用变量必须初始化。

图5-指针会申请内存空间


        另外,可以将指针p改变指向,例如:

        int b = 1000;

        p = &b;

        而引用q是不可改变指向的,&q = b是会报错的(直接q = b会咋样?结果是q和a都是1000)。


总结起来就是:

        2) 定义指针指向指针时,需要使用二级指针

        3) 引用必须被初始化,指针不用

        4) 指针占用内存,而引用只是别名,本身不占内存

        5) 引用不能为空,而指针可以

        6) 引用一旦初始化就不可以改变,而指针可以改变指向

有什么想法可以写在留言区哦:


以上是关于C++学习笔记-1:指针和引用的主要内容,如果未能解决你的问题,请参考以下文章

C++基础学习笔记C++语法之引用

C++基础学习笔记C++语法之引用

C++学习笔记11--纯虚函数和抽象类

mask rcnn onnxruntime c++ 学习笔记

mask rcnn onnxruntime c++ 学习笔记

C++笔记--指针和引用