我正在学习围棋,我尝试了'&'来获取内存地址。但是我不知道'&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
。
&i
i
将是类型为 的变量的地址**int
,当您取消引用时:*i
将为您提供的值i
是 的地址b
。因此,如果您还取消引用 that: **(&i)
,那也会给您 (的价值) b
。
ABOUTYOU
TA贡献1812条经验 获得超5个赞
所以&
运算符生成一个指向它的操作数的指针。所以&i
基本上生成一个指针,i
它已经是一个指针b
,它只是一个内存地址。所以当你这样做时,fmt.Println(&i)
它会打印出i
.
- 3 回答
- 0 关注
- 193 浏览
添加回答
举报
0/150
提交
取消