猿问

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

我正在学习围棋,我尝试了'&'来获取内存地址。但是我不知道'&i'是什么意思,'i'来自i := &b,b是一个int。


b := 7

i := &b

fmt.Println(&b) //print => 0xc000088000

fmt.Println(i) //print => 0xc000088000

fmt.Println(&i) //print => 0xc00000e018

在这种情况下,'&i' 的含义是什么?


婷婷同学_
浏览 194回答 3
3回答

ITMISS

&是地址运算符,评估它会得到一个内存地址,当传递给包时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。

慕码人2483693

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

ABOUTYOU

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

相关分类

Go
我要回答