Go 如何获取指针的地址?;
快跑 结果: 地址:c420016078 ip存储的数据记录:c420016078 ip地址:842350510120Go 如何获取指针的地址?;,go,Go,快跑 结果: 地址:c420016078 ip存储的数据记录:c420016078 ip地址:842350510120 我的问题是:842350510120的ip地址正确吗?不,您需要像在前面的打印语句中那样打印地址%x。我想,这就是你困惑的地方,因为地址被解读为int 这里的工作代码 我的问题是:842350510120的ip地址正确吗 没有人能回答这个问题。它取决于您的计算机,甚至可能在每次运行程序时都会发生变化 如果您询问fmt.Printf(“%d”,&ip)是否打印ip地址:是。如果以
我的问题是:842350510120的ip地址正确吗?不,您需要像在前面的打印语句中那样打印地址%x。我想,这就是你困惑的地方,因为地址被解读为int 这里的工作代码 我的问题是:842350510120的ip地址正确吗 没有人能回答这个问题。它取决于您的计算机,甚至可能在每次运行程序时都会发生变化
如果您询问
fmt.Printf(“%d”,&ip)
是否打印ip地址:是。如果以一致的基数(十六进制)打印地址,您将看到预期结果。在Go gc编译器的当前版本中,变量i
和pi
在堆上分配
比如说,
package main
import "fmt"
func main() {
var a int= 20
var ip *int
ip = &a
fmt.Printf("a address: %x\n", &a )
fmt.Printf(" the adrress that ip stored: %x\n", ip )
/*I try to get the address of variable ip */
fmt.Printf(" the address of ip: %d\n", &ip )
}
输出:
package main
import "fmt"
func main() {
var i int = 20
var pi *int = &i
fmt.Printf("%x the address of i\n", &i)
fmt.Printf("%x the address of pi\n", &pi)
fmt.Printf("%x the address that pi stored\n", pi)
}
对你为什么怀疑它?因为它比其他指针“大”?您使用十进制基数打印它,而其余的则使用十六进制。要使用hexa打印,请使用
%x
动词或%p
(这也会添加0x
前缀)。@icza是的。你明白我的意思。坦克u。我刚喝醉,你明白我想问的。谢谢
c00008e010 the address of i
c000090018 the address of pi
c00008e010 the address that pi stored