我正在学习围棋,我尝试了'&'来获取内存地址。但是我不知道'&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。
ABOUTYOU
TA贡献1812条经验 获得超5个赞
所以&运算符生成一个指向它的操作数的指针。所以&i基本上生成一个指针,i它已经是一个指针b,它只是一个内存地址。所以当你这样做时,fmt.Println(&i)它会打印出i.
- 3 回答
- 0 关注
- 303 浏览
添加回答
举报
0/150
提交
取消
