关于指针的一些入门理解

关于指针的一点小想法

对于C++初学者来说指针一直是一个非常让人头疼的问题,最基本的就是理解不清*和&,在学习过程中产生了一点小想法,记录分享一下
#include<stdio.h>
int main()
{
	int a = 0;
	int* p = &a;
	return 0;
}
这段代码定义了一个指针,对于初学者来说这样的描述很让人头大,我们可以尝试用自己的方式来理解这段代码。首先要有三个最基本的概念,1、想象内存就是一间酒店,每一块内存空间都是一个小房间,每个房间都有着自己的房间号;2、住客,上面代码中的a我们就可以把他想象成一个住客;3、写着房间号的纸条,这个可能有些难以理解需要结合着代码来看;4、登记入住,想要在这个酒店入住你必须要告诉酒店你要在房间里放什么,也即是数据类型 int
有了上面的概念再来看这段代码,p是一个房间的门牌号,*p代表着这个房间里面的东西,这是一个难点,我们需要理解房间里面不仅仅可以住人,也可以是一张写着门牌号的纸条。int *p就可以理解为在内存这个酒店开了一个房间,房间里放的东西是int类型的*p。“=”前的内容就能较为清晰的理解了,这时再看等号后面,“&”我们可以把它理解成内存这个酒店的前台,你可以拿着住客的姓名去找他要这个人的房间号,台就会给你一张写着住客房间号的地址也就是代码中的“&a”。
这段代码就可以理解为,a是一个0,他到酒店入住,万恶的程序猿找前台把他的房间号(&a)要出来写到了一张纸条上,然后又开了一间房间号是p的房间来放这张纸条。至于后面万恶的程序猿要把这个纸条(*p)拿来干什么就不得而知了。
有了上面的理解我们就能很清晰的理解修改*p的值是不会影响到a的值的,因为*p只是一张写着a的地址值的纸条,

这时你可能已经敏锐的发现了其中一个的bug,房间号纸条的类型和人的类型是一样的,是的为了便于理解,笔者引入了住客的概念,实则房间里放的就只有一类东西,就是数据,不管是1、2、3、4还是指针地址实质上都是数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值