go-指针
指针
存储变量值存储地址的变量叫做指针
指针变量的声明
*数据类型:表示指向这个类型的指针类型
var a *int // a是指向存储int数据类型的内存地址
var b **int // b是指向存储*int指针的内存地址,即指针可以指向存储指针的内存
var c int = 10
var d = &c // &变量名取地址,自动推导初始化指针
e := @d // 简短声明,自动推导初始化指针
取地址&、指针反解*
var c int = 10
var d = &c // &变量名:取地址,自动推导初始化指针
v := *d //10 *指针:获取指针指向的变量值
数组指针与指针数组
// 数组指针:指向一个数组的指针
var a [3]int
var b *[3]int = &a
b[2] = 100 // go中可以直接通过数组指针访问数组
(*b)[1] = 999 // 也可以反解指针后访问数组
// 指针数组:数组元素为指针的数组
var x,y,z int = 11,12,13
var c [3]*int = [3]*int{&x, &y, &z}
注意
1、向函数传递指针,可以在函数内部修改源数据
2、向函数传递数组时,尽量使用切片,而不是数组指针,以避免数组索引越界异常
3、go中不支持指针运算,即不能通过修改指针值访问不同的变量值

浙公网安备 33010602011771号