Go语言中的指针
变量的本质是对一块内存空间的命名,我们可以通过引用变量名来使用这块内存空间存储的值,而指针则是用来指向这些变量值所在内存地址的值。
注:变量值所在内存地址的值不等于该内存地址存储的变量值。
Go语言中,如果一个变量是指针类型的,可以用这个变量来存储指针类型的值。
以下是Go语言中,指针的简单使用:
a := 100
var ptr *int // 声明指针类型
ptr = &a // 初始化指针类型值为变量 a
fmt.Println(ptr)
fmt.Println(*ptr)
如上代码中,变量 ptr 就是一个指针类型,表示指向存储 int 类型值的指针,ptr本身是一个内存地址,因此需要通过内存地址进行赋值(通过 &a 获取变量 a 所在的内存地址),赋值之后,可以通过 *ptr 获取指针指向内存地址所存储的变量值,这种操作称为“间接引用”。
1 指针类型的声明和初始化
指针变量在传值时之所以可以节省内存空间,是因为指针指向的内存地址的大小是固定的,在32位机器上占4个字节,在64位机器上占8个字节,这与指针指向内存地址存储的值类型无关。
var ptr *int
fmt.Println(ptr)
fmt.Println(*ptr)
a := 100
var ptr *