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中不支持指针运算,即不能通过修改指针值访问不同的变量值

posted @ 2020-03-28 10:30  DongDon  阅读(75)  评论(0)    收藏  举报