指针变量的基本概念详解(go语言基础语法)

1.什么是地址

传统生活中,点外卖时需要填写一个地址还有一个名字,外卖小哥哥便可以根据这个地址找到你这个人。计算机中的内存也是有十六进制表示的地址的我们可以理解为:变量也是有一个地址和一个值的,我们通过这个地址便可以访问到这个变量的值。
通过上面的地址我们知道小明这个人点的是红烧猪蹄

通过计算机内存的地址我们知道变量a里面存放的是10
通过上面的地址我们知道小明这个人点的是红烧猪蹄
通过计算机内存的地址我们知道变量a里面存放的是10
好的,此时我们知道了小明的地址是xx街道xx号xx室,那我们是不是也能知道变量a的地址是0x010ff950

2.什么是指针

在生活中,不仅存在点外卖的人,也存在偷外卖的小偷啊,比如小黑。我们看下面这一个图片:
在这里插入图片描述
我们可以看到,有一个小偷叫小黑家住在YY街道YY号YY室(小偷也是有家的人捏),可是他不点外卖,他心里悄悄记下来小明家的地址,这样他就可以找到小明家,然后偷了小明点的红烧猪蹄。
同样的,对于指针变量,我们也可以这样理解,我们一起看下图,你可以先想想它表示什么含义
在这里插入图片描述
你一定想到了,指针变量a家住在计算机内存中的0x020ff000,他的心里悄咪咪记下的是变量a的地址0x010ff950。这样指针变量a就可以偷偷访问变量a的值了捏。

3.指针变量的定义

基本形式:
var  *标识符  类型标识符

类型标识符表明了这是一个什么类型的指针,比如你定义的小偷是偷外卖的,那他就专一的偷外卖;如果你定义的小偷是偷钱的,那他就专一的偷钱;标识符表示这个类型的指针的名字,比如偷外卖这个叫小黑,偷钱那个叫小哈;
代码实例:

var  *p1   int 
var  *p2   float64
var  *p3   uint32

显然:名叫p1的指针变量,是一个专门指向int的指针。其余两个类同

4.取值符和取地址符

&是取地址符
*是取值符

什么意思呢?我们想想之前的例子,小黑是不是要知道小明家的地址才能去偷小明家的红烧猪蹄啊。那怎么样才能知道呢,我们就可以使用&取地址符,把小明家的地址告诉小黑。
那同样的我们可以这样使用:

var  *p1   int =&a

这样我们是不是就把a的地址告诉int型指针p1了啊!
那么问题来了,小黑知道了小明家的地址,怎么样才能通过这个地址知道小明点的是红烧猪蹄呢,我们可以使用*取值符,把小明点的什么告诉小黑。
那同样的我们可以这样使用:

fmt.Println(*p1)

这样我们就知道了小黑知道的那个小明家的地址里是什么外卖,也就是知道了p1这个指针变量指向的变量a的值是什么。
聪明的你可以猜猜以下式子表示什么意思:

&p1

这个不就是直接告诉小黑家的地址嘛,就是直接取指针变量的地址

*a

这个不就是直接告诉小明点的什么嘛,就是变量a的值

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是一只土拨鼠呐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值