在Golang中指针是一种
类型
,指向变量所在的内存单元!不是内存地址
var num *int
// 分配内存地址
num = new(int)
// 设置值
*num = 10
// 打印内存地址
fmt.Printf("%p\n", num)
// 打印指针变量指向的内存地址
fmt.Printf("%p\n", &num)
// 打印指针变量值
fmt.Printf("%d\n", *num)
指针地址不等于
内存地址,指针地址指向的是存储内存地址的指针变量地址,而内存地址指的是值实际存放的内存单元地址,参考以下代码理解:
var num int
np := &num
// 获取变量的内存地址
fmt.Printf("%p\n", &num)
// 获取指针变量所指向的内存地址
fmt.Printf("%p\n", np)
// 获取指针变量内存地址
fmt.Printf("%p\n", &np)