指针与引用的个人理解----C++初学之路

来源:互联网 发布:mui.picker.min.js 编辑:程序博客网 时间:2024/05/29 07:28

ps:自己才刚刚开始学习C++,以下是自己的学习记录,切勿完全相信。


今日学习了主要是引用&与指针*

先说说引用,引用是一种绑定,可以说是一种别名,根据我自己的理解,就像,我妈叫我儿子,我叔叫我侄子,两个都是我。

那么我妈打了我一巴掌,是不是就是打了我叔的侄子。

int i1=100;

int &i2=i1;这样就是i2是一种int型引用,绑定了i1,两者都是一样的

i2=10;ok,这样i1也变成了10.

不过,引用是别名,不是一种对象。不能拷贝。

另外,既然引用它是一个绑定,那么假如这个世界上没有我,那么侄子和儿子这个称谓出现的话就是非法,不合常理的,就像我现在,我叫我舍友叫做儿子,是不行的,会被打的。

所以,引用必须初始化一个对象,而不是初始化一个值,可以这么比喻,对象是我,我叫MTFJohn,那么这个值就是MTFJohn,那么我妈的儿子是我这个人,而不是这个叫MTFJohn

因为MTFJohn这个名字别人也会用,你必须绑定的是我这个人。

所以int &i=250;这样是不正确的。

 

指针,它是一个对象,对象在C++中称作是一个物体(这是在之前某个博客里看到的),那么是对象,可以不需要初始化,但是又建议初始化。为什么?还是那个比喻,对象是我,我可以不需要名字,我就是我,我存在,即是我,但是你不给自己取个名字,那么别人就很难来叫你做事,喂,那个胖子!

当然我可以叫很多名字,但是要有正确的名字,也就是指针初始化要正确。

指针可以有四种状态,指向一个对象,指向一个位置,空指针,无效指针。

指向一个对象,就是给我自己取个名字嘛。

指向一个位置,也是一个名字嘛。

空指针,就是没有名字嘛。

无效指针,可以说你取了个自己都不知道怎么叫的名字。

指针最好初始化,因为,不初始化,就是一个无效指针,你不懂它会指向哪里,在编译器中出现这种错误,很麻烦,作为初学者,我从书中一大堆文字看来,就是麻烦。

因为它可能指向一个地址,恰好里面有个数据,就像我写了一大堆代码,诶?怎么结果有问题,可是又不报错,那么这个错误很难找出。

 

感觉说了很多废话,反正自己也喜欢经常回头看看自己的废话,总能找出很多错误。

 

现在说说我学到的关于指针和引用两者的符号问题。

*&,从书本上给我的感觉就是,这两个符号是不是有四种应用。

int i=250;

int *p=&i; 指针和取地址

int &y=i; 引用

*p=350; 解指针

int i2=250;

p=&i2;取地址

我不知道自己是不是对的,因为现在全是我脑中自认为的理解。

总结就是:*这个符号,取地址里的值

         &这个符号,取这个对象的地址

那么这样理解,嵌套问题我感觉就很好理解了

int a=250;

int *p=&a;p是一个指针指向取的a这个变量的地址。

int **p2=&p;两个*,那就是指向指针的指针。

既然两个*是指向指针的指针

那么*&这个就是指向指针的引用。

int i=250;

int *p=nullptr;

int *&r=p;

r=&i;这里取i的地址,给r,引用是绑定,那么就是给指针p,那么指针就指向i的地址

*r=0;*是取值,那么就是把这个p指针指向的东西的值改成0

最后i=0.