2.1.3 指针
一、什么是指针
在计算机中,指针是编程语言的一种数据类型,用来表示或存储一个存储器地址,这个地址的值直接指向存在该地址的对象的值
在使用指针前,需要声明指针,声明格式如下:
var var_name *var_type解释:
var_type指针类型var_name指针变量名*号用于指定变量是作为一个指针来使用
声明有效指针
var name *string // 指向string类型的指针 var fp *float64 // 指向float64类型的指针
二、如何使用指针
在Go语言中,指针使用流程如下
定义指针变量
为指针变量赋值
访问指针变量中指向地址的值
在指针类型前面加上*号(前缀)来获取指针所指向的内容
示例如下
func main() { var str string = "LonelySnow" // 声明实际变量 var name *string // 声明指针变量 name = &str // 指针变量的存储地址 fmt.Printf("str变量的地址是:%x\n", &str) // 指针变量的存储地址 fmt.Printf("name变量存储的指针地址是:%x\n", &str) // 使用指针访问值 fmt.Printf("*name变量的值:%s\n", *name) }结果:
str变量的地址是:c00008a210 name变量存储的指针地址是:c00008a210 *name变量的值:LonelySnow
三、空指针
当一个指针被定义后没有分配到任何变量时,他的值为nil
nil指针也被称为空指针,nil在概念上同其他语言的null、None、NULL,代指0值或空值
一个指针变量通常缩写为ptr
结果:
ptr的值为:0
四、指针数组
声明整形指针数组的形式如下
上面示例中,ptr为整形指针数组,因此每个元素都指向了一个值
结果:
五、指向指针的指针
如果一个指针变量存放的是另一个指针变量的地址,则称这个指针为指向指针的指针变量
当定义一个指向指针的指针变量时,第一个指针存放第二个指针的地址,第二个指针存放变量的地址
指向指针的指针变量声明格式如下:
解释:
以上指向指针的指针变量为整形。
访问指向指针的指针变量值需要使用两个”*“号
示例:
结果:
六、指针作为函数参数
Go语言允许向函数传递指针,只需要在函数定义的参数上设置为指针类型即可
示例:如何向函数传递指针,并在函数调用后修改函数内的值
Last updated