首页 > Go学习 > Go语言中的指针
2021
09-03

Go语言中的指针

变量是一种使用方便的占位符,用于引用计算机内存地址。

Go语言的取地址符是 &放到一个变量前使用就会返回相应变量的内存地址

一个指针变量指向一个值的内存地址

指针变量需要使用星号(*)作为前缀声明

var var_name *var-type
var-type为指针类型
var_name为指针变量名
* 号用于指定变量是作为一个(1级)指针

指针的使用

指针使用流程:

定义指针变量
为指针变量赋值
访问指针变量中指向地址的值(在指针类型前面加上针级别数量的星号作为前缀(**)来获取指针所指向的内容

var a int= 20
var ip *int = &a

fmt.Printf("ip变量储存的指针地址: %x\n", ip)
fmt.Printf("*ip 变量的值: %d\n", *ip )

空指针

当一个指针被定义后没有分配到任何变量时,它的值为nil

nil指针也称为空指针

指向指针的指针

如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量

指向指针的指针变量根据指针级别使用指针级别数量的星号(*)作为前缀声明

var var_name **var-type; //2级指针
var var_name ***var-type; //3级指针

a := 5
var zhen1 *int = &a
var zhen2 **int = &zhen1
var zhen3 **int = &zhen2
指针变量zhen1变量存放的是变量a的地址,称为1级指针
指针变量zhen2变量存放的是指针变量zhen1的地址,称为2级指针
指针变量zhen3变量存放的是指针变量zhen2的地址,称为3级指针
以此类推,可以后4级、5级甚至更多等级的指针

要获取指针指向的变量的值需要在指针变量前面添加指针级别数量的星号作为前缀

fmt.Printf("变量 a = %d\n", a )
fmt.Printf("1级指针变量 *zhen1 = %d\n", *zhen1 )
fmt.Printf("2级指针变量 **zhen2 = %d\n", **zhen2)
fmt.Printf("3级指针变量 ***zhen3 = %d\n", ***zhen3)
最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。