为了账号安全,请及时绑定邮箱和手机立即绑定

当 i := &b 时 '&i' 是什么意思

当 i := &b 时 '&i' 是什么意思

Go
婷婷同学_ 2023-06-19 14:06:13
我正在学习围棋,我尝试了'&'来获取内存地址。但是我不知道'&i'是什么意思,'i'来自i := &b,b是一个int。b := 7i := &bfmt.Println(&b) //print => 0xc000088000fmt.Println(i) //print => 0xc000088000fmt.Println(&i) //print => 0xc00000e018在这种情况下,'&i' 的含义是什么?
查看完整描述

3 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

&是地址运算符,评估它会得到一个内存地址,当传递给包时fmt,内存地址通常以十六进制格式打印(“base 16 notation, with leading 0x”)。

内存地址就是:内存地址。int它是变量的地址还是 a string,或者指针类型的变量都没有关系。打印时,它们看起来都“相同”。

地址运算符:

x对于类型的操作数T,寻址操作&x生成一个*T指向类型的指针x

所以地址运算符给你一个指针值,当你取消引用时,你会得到原始值。

&b将是变量的地址b,类型为*int,当您取消引用时:*b将为您提供(的值)b

&ii将是类型为 的变量的地址**int,当您取消引用时:*i将为您提供的值i是 的地址b。因此,如果您还取消引用 that: **(&i),那也会给您 (的价值) b


查看完整回答
反对 回复 2023-06-19
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

这里&b返回的地址b和相同的地址存储在i。由于i也是一个变量&i将返回变量i的地址。



查看完整回答
反对 回复 2023-06-19
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

所以&运算符生成一个指向它的操作数的指针。所以&i基本上生成一个指针,i它已经是一个指针b,它只是一个内存地址。所以当你这样做时,fmt.Println(&i)它会打印出i.



查看完整回答
反对 回复 2023-06-19
  • 3 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信