Go 如何获取指针的地址?;

Go 如何获取指针的地址?;,go,Go,快跑 结果: 地址:c420016078 ip存储的数据记录:c420016078 ip地址:842350510120 我的问题是:842350510120的ip地址正确吗?不,您需要像在前面的打印语句中那样打印地址%x。我想,这就是你困惑的地方,因为地址被解读为int 这里的工作代码 我的问题是:842350510120的ip地址正确吗 没有人能回答这个问题。它取决于您的计算机,甚至可能在每次运行程序时都会发生变化 如果您询问fmt.Printf(“%d”,&ip)是否打印ip地址:是。如果以

快跑

结果:

地址:c420016078 ip存储的数据记录:c420016078 ip地址:842350510120


我的问题是: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