go语言指针的学习笔记

指针

简单的说,指针就是存储变量地址的变量。

变量只是一种占位符而已,用于显示内存地址。

获取变量的地址

go语言的获取地址符说&,放到变量前使用就会返回该变量的地址。

func main() {
	a := 10
	fmt.Println(&a)  //0xc0000a6008
}

声明指针

声明一个指针,可以使用*

var v *Type
var i *int 				//指向int
var f *float32		//指向float
func main() {
	var i int = 20
	var ip *int
	ip = &i

	fmt.Println("i的值:", i)
	fmt.Println("i的内存地址:", &i)
	fmt.Println("ip 的值: ", ip)
	fmt.Println("ip 的内存地址: ", &ip)
}

i的值: 20

i的内存地址: 0xc0000a6008

ip 的值: 0xc0000a6008

ip 的内存地址: 0xc00009a018

获取指针的值

获取一个指针的值,可以在指针变量前面加上*

	var i int = 20
	var ip *int
	ip = &i
	fmt.Println("指针的值: ", *ip) //20

指针的指针

指针的指针其实跟指针是一样的


func main() {
	var p int = 20
	var p1 *int
	var p2 **int

	p1 = &p
	p2 = &p1

	fmt.Println(p2)  //打印的是p1的地址
	fmt.Println(&p2) //打印的是p2的地址
	fmt.Println(&p1) //打印的是p1的地址
	fmt.Println(p1)  //打印的是p的地址
	fmt.Println(&p)  //打印的是p的地址
}
0xc0000a2018
0xc0000a2020
0xc0000a2018
0xc0000a8008
0xc0000a8008

数组指针和指针数组

数组指针首先是一个指针,一个数组的地址。

指针数组是一个数组,存储的数据类型是指针。

数组指针:

arr1 := [3]int{1, 2, 3}
var p *[3]int
p = &arr1 //p就是一个数组指针

*[4]string 存储了4个字符串的数组的指针

指针数组:

[3]*string 存储了3个字符串指针的数组

posted on 2020-03-05 22:02  长方形  阅读(245)  评论(0编辑  收藏  举报

导航