指针
基本介绍
指针的概念可以类比经纬度来理解,比如张三此刻的经纬度是(110.12,654.4),张三这个人就是变量,经纬度就是指针。指针所指向的内存地址的值可以等价为经纬度所指向的地址上的人或物
基本使用
首先定义一个变量 i
var i int = 10
运行代码时会在内存空间中开辟一块空间给这个变量 i
,i
中存的是变量的值,如果要获取变量的地址,用 &i
即可取出 i
的内存地址
fmt.Println("i 的地址为:", &i)
# 输出
i 的地址为: 0xc0000120a8
内存地址需要用指针来保存,指针类型使用 *int
来定义:
// 定义了一个指针类型的变量 ptr,ptr 的类型为 *int,并把 i 的地址赋值给 ptr
var ptr *int = &i
此时 ptr
中存的值就是 i
的内存地址(不要理解为 ptr
的内存地址 = i
的内存地址),输出 ptr
的值:
fmt.Println(ptr)
# 输出
0xc0000120a8
可以看到 ptr
的值就是上面 &i
取出的 i
的内存地址,接着打印一下 ptr
的内存地址:
fmt.Println(&ptr)
# 输出
0xc000006030
可以看到 ptr
的内存地址并不是 i
的内存地址,那如果要取出 ptr
中存的内存地址的值可以使用 *ptr
来取:
fmt.Println(*ptr)
# 输出
10
案例演示
获取一个变量 num 的地址,把 num 的地址赋给指针 ptr,并通过 ptr 修改 num 的值
package main
import "fmt"
func main() {
num := 10
var ptr *int = &num
*ptr = 15
fmt.Println(num)
}
# 输出 num 结果
15