我写了这个测试代码:
import "fmt"
func getIntPointer(i int) *int {
var result int
result = i + 1
return &result
}
func main () {
ip1 := getIntPointer(4)
ip2 := getIntPointer(10)
fmt.Println(*ip1, *ip2)
fmt.Printf("%p %p\n", ip1, ip2)
}
我希望看到:
11
11
address1
address1
假设第二次调用将为函数变量使用相同的空间(基于我的 C 背景,在函数停止工作后,所有放置在堆栈中的函数变量都可以用下一个函数调用重写)。但相反,我得到了:
5
11
address1
address2
为什么我可能会得到这个结果?为什么与预期输出有差异?
牛魔王的故事
慕妹3242003
随时随地看视频慕课网APP
相关分类