指针那点事儿

 一级指针那点事儿

在说明之前,我们要先明确一件事情,如第一张图,我们定义p1的时候,是这样的:int *p1 = tem;意思是什么呢,我们定义了一个叫做p1的指针,p1这个指针指向的地址是临时变量tem的地址 ,啥意思呢,就是有一个住在一个大别墅的一个人,他居住的房子的名字叫做tem,只不过这个人哎他觉得自己的房子这个名字很拉,他说不行,我要起一个新的名字,他就起了一个p1,就哎,就是名字不一样,但都是那这个位儿,您要来找他,报哪个名字您都能去他家。

解引用 

那问题又来了,第一张图的*p1是什么呢,您可能就想了,哎我不是叫p1吗,加个 * 你啥意思啊你,哎~,这不就来了吗——解引用,想必这个词大家都听过,解引用解引用,解的啥引用啊,哎,从现在起不再迷茫,它解的就是p1,啥意思腻,咱上边说到,p1就是tem,这俩东西没差,那么好,p1是指向tem地址的,tem地址是干啥的呢,是这个地址要存它的值,他才开辟了一个地址对不对,你买了栋房子,你是不是要把你这个人放进去呢,你说哎我就是玩儿我买个房子,我就不住(那您先闭会嘴 这咱也说不过您[手动狗头])。

言归正传,这个*的意义就是,他把这个地址的值给取到了 啥意思腻,你在屋子里住着好家伙,灭霸说这屋子是我的了,你瑟瑟发抖,不敢出屋,好你就是灭霸的了,明白了没,解引用就是取值,取到当前指针所指向地址的存储的值,当然你也可以通过解引用修改指针指向地址的值,怎么说?灭霸说,我看不上你,把你丢出去了,换了一位金发美女进来,那这个房子(地址)的主人(值)就是人家了。

二级指针那点事儿

那看图我们继续,p1指针指向的是tem的地址,p2指针是指向p1所在的地址,指针本身也是一个变量,创建指针的时候,他也是有自己的一个地址的,所以,就存在了指向指针的指针,也就是二级指针,同样的道理,也可以有第三个***p3指针,指向p2的地址,一直下去,即高级指针....

我们来具体看一下:

int tem = 60

*p1 = tem

**p2 = &p1

*(*(*p2)) = 100

  • p1是指向创建的tem变量所在的地址,而*p1对它指向的地址进行了解引用,即取到了指向地址的值也就是60(此时可以通过修改*p1来间接修改tem);
  • p1是一个指针,他不是普通的字符,整型等变量,所以我们在定义一个指向p1这个指针的指针的时候,就得是*p2这样式的(什么你问为什么?给我记住就行!好奇可是会害死猫),那同样,**p2就是对指向p1所在地址的值进行解引用,p1说:慢!!,劳资也是个指针你没看见吗,所以,**p2就是对指向p1所在地址的p1所指向的地址的值进行解引用,同理,可以通过修改**p2来修改tem,如下图

结合图和我精彩幽默的叙述(bushi),你懂了吗,如有不得当请大佬指教,互动必回!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值