「这是我参与2022首次更文挑战的第26天,活动详情查看:2022首次更文挑战」。
0 环境
- 系统环境:win10
- 编辑器:vscode
- go版本:gol.17.3
- 参考文章:go语言中文文档
1 前言
内存存放运行数据,而且还要能读取/写入到该数据,那么就要有内存地址了(给它们整个编号)。根据这个内存地址找值(寻址),可以把内存地址赋值给指针,也就是说指针保存内存地址,达到指向该数据的目的。比如有么有记得起初学校的快递柜子,你要找个快递,很是无序,假设现在快递柜给每个柜子定义一个编号(因为没用过它,所以是假设。),当快递小哥把你的快递放到快递柜里时,会收到一个短信,告诉你在哪个位置,你按照这个地址找到对应柜子,取出里面的包裹。
2 声明和定义指针
取地址符 -->
&, 指针指向变量。
这里 0xc000138000 --> 内存地址。ageP指向age变量,*age获取age变量的值。注:指针类型大小一般占4或8个字节。
*如下:两个指针类型不一样的时候,是不能赋值的。编辑器直接就会红线提示的。两个类型一致的就可以。比如我指向int类型的变量,那么就是*int,后面可以是基本类型,也可以是自定义结构体。
3 总结
指针对于我们来说有点陌生,但是可以想像一下,有人把金手指埋在某个地方,并把这个事情记录在画像上,叶凡庶出,被发配扫祖地,无意手破口流血,清理画时,不小心滴到画上,显现了这个地址,他按照地址找到金手指,从此一飞冲天,然后某天又被天道回收了,也就说:画里保存金手指的地址,这个地址下有金手指,也就是说:你想有金手指,那么现在你就缺一个地址。还有一点,
*后面的类型是有要求的,同类型的才可以赋值的。