[英]What's the meaning of '&i' when i := &b
我正在学习编程,我尝试了'&'来获取内存地址。但是我很想知道'&i'是什么意思,而'i'来自i:=&b,b是一个整数。
b := 7
i := &b
fmt.Println(&b) //print => 0xc000088000
fmt.Println(i) //print => 0xc000088000
fmt.Println(&i) //print => 0xc00000e018
在这种情况下,“&i”是什么意思?
&
是地址运算符 ,评估得出一个内存地址,该内存地址在传递给fmt
包时,通常以十六进制格式(“ base 16表示法,前导0x”)打印。
内存地址就是这样:一个内存地址。 不管是int
变量或string
的地址,还是指针类型的变量的地址。 当打印时,它们看起来都“相同”。
地址运算符:
一个操作数
x
型的T
,写入动作&x
生成类型的指针*T
到x
。
因此,地址运算符为您提供了一个指针值,当您取消引用时,该指针值将返回原始值。
&b
将是可变的地址b
,类型*int
,其中,当取消引用: *b
会给你(的值) b
。
&i
是**int
类型的变量i
的地址,当您取消引用时: *i
将为您提供i
的值, i
b
的地址。 因此,如果您还取消引用**(&i)
,那也将给您b
的值。
这里&b
返回的地址b
和相同的地址被存储在i
。 由于i
也是变量,因此&i
将返回变量i的地址。
因此, &
运算符生成一个指向其操作数的指针。 因此&i
基本上会生成一个指向i
的指针,该指针已经是一个指向b
的指针,而b
只是内存地址。 所以,当你做fmt.Println(&i)
它打印的内存地址i
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.