2.1.3 指针

一、什么是指针

  1. 在计算机中,指针是编程语言的一种数据类型,用来表示或存储一个存储器地址,这个地址的值直接指向存在该地址的对象的值

  2. 在使用指针前,需要声明指针,声明格式如下:

    var var_name *var_type

    解释:

    1. var_type指针类型

    2. var_name指针变量名

    3. *号用于指定变量是作为一个指针来使用

  3. 声明有效指针

    var name *string	// 指向string类型的指针
    var fp *float64		// 指向float64类型的指针

二、如何使用指针

  1. 在Go语言中,指针使用流程如下

    1. 定义指针变量

    2. 为指针变量赋值

    3. 访问指针变量中指向地址的值

    4. 在指针类型前面加上*号(前缀)来获取指针所指向的内容

  2. 示例如下

    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

三、空指针

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

  2. nil指针也被称为空指针,nil在概念上同其他语言的null、None、NULL,代指0值或空值

  3. 一个指针变量通常缩写为ptr

    结果:

    ptr的值为:0

四、指针数组

  1. 声明整形指针数组的形式如下

  2. 上面示例中,ptr为整形指针数组,因此每个元素都指向了一个值

    结果:

五、指向指针的指针

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

  2. 当定义一个指向指针的指针变量时,第一个指针存放第二个指针的地址,第二个指针存放变量的地址

  3. 指向指针的指针变量声明格式如下:

    解释:

    1. 以上指向指针的指针变量为整形。

    2. 访问指向指针的指针变量值需要使用两个”*“号

  4. 示例:

    结果:

六、指针作为函数参数

  1. Go语言允许向函数传递指针,只需要在函数定义的参数上设置为指针类型即可

  2. 示例:如何向函数传递指针,并在函数调用后修改函数内的值

Last updated