C++学习笔记-1:指针和引用
Posted 汽车人的编程小屋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++学习笔记-1:指针和引用相关的知识,希望对你有一定的参考价值。
因为工作上的一些调整,我最近又得开始搞C++了。
以前做ios的时候要学Objective-C,会从C语言学起,不过学会一点C的基础之后,就开始按定式编程了,不需要太深入。这次的工作不一样,要审查别人的代码,避坑。所以还得把基础打牢些,思前想后,决定从之前没有理解得很透彻的指针开始。
一、指针是什么,引用又是什么?
用一张图来说明将会更直观一点:
图1-指针变量p的解析
搞清楚了指针(*)是什么,下面来说说引用(&)是什么。
图2-引用变量q的解析
二、再讨论讨论老师那句话
在我举的例子中,可以很明显的发现,指针符号*和引用符号&出现在定义表达式和赋值表达式中,其含义是不一样的。我们可以归纳如下:
图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:指针和引用的主要内容,如果未能解决你的问题,请参考以下文章
mask rcnn onnxruntime c++ 学习笔记