俗语解释
你有事想找朋友帮忙
会直接打朋友电话
但是你想找明星谈合作
就必须先联系明星的经纪人
经纪人觉得你靠谱才会带着你去见明星
这个经纪人,就是编程领域的指针
现实例子
C/C++
中的指针,是一种变量,它长度为机器字长(32位系统就是4字节,64位系统就是8字节),储存一个对象
的地址——地址长度=机器字长,巧不巧?
对象可以是简单对象,例如int
,这时候用指针就感觉很矫情,因为你想找朋友帮忙直接他打电话就行,何必先打电话给他老婆问他在不在?
对象也可以是复杂对象,例如FILE
,你要操作文件,就必须获取一个文件指针。有杠精说我不能自己定义个FILE
对象啊?可以,那你自己就是文件了,操你自己吧。
延伸拓展
指针能聚拢资源
经纪人一般为多个明星服务
这些明星一般散居各地
但你可以通过经纪人联系到他们
同样地,指针可以指向散布在内存中的多个对象
将它们串联成逻辑上的一个整体
指针会降低性能
如果没有经纪人,你一次登门就能访问到明星(小咖)
现在多了个经纪人,你得登2次门,一次经纪人,一次明星(大咖)
比原来多了一次,
好麻烦啊!
但是这个世界就是这样,要么麻烦,要么事办不成。
同理,CPU访问复杂对象
也要先去内存取出对象指针,再根据指针去内存取出对象本身
比原来多了一次
好麻烦啊!
指针可转变类型
比如有个经纪人,他一开始为音乐明星提供服务
但后来音乐行业不赚钱了,生活所迫他转型成电影明星经纪人
对于想投放广告的小老板来说
以前他可以帮忙宣传音乐周边广告
现在只能是影视周边广告了
虽然他的业务类型已经变了
但这个经纪人还是原来的经纪人,他的联系方式没变
同理,对指针做类型转换之后,就能做新的操作了
但指针在内存中的地址没变。
升华总结
社会上很多事都是通过引入一个中间层来简化复杂度的,例如房产中介,基金经理,等等,这些中间层将多对多的生产关系简化成两个一对多,这种中间层提供的服务很有必要。
话说回来,指针应该是最简单的服务了吧?相比微服务,指针简直是纳服务😏