三十、Go 语言 – 指向指针的指针

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

好绕口啊,指向指针的指针呢就是一个指针的变量的值是另一个指针

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

 

语法

Go语言声明指向指针的指针变量的语法格式如下

var ptr **int;

上面的代码中指向指针的指针变量 ptr 为整型

访问指向指针的指针变量

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

println(**ptr)

范例

/**
 * file: main.go
 * author: pottercoding.cn 程序员波特,程序员编程资料站(pottercoding.cn)
 * Copyright © 2015-2065 pottercoding.cn. All rights reserved.
 */
package main
import "fmt"
func main() {
   var a int
   var ptr *int
   var pptr **int
   a = 3000
   /* 指针 ptr 地址 */
   ptr = &a
   /* 指向指针 ptr 地址 */
   pptr = &ptr
   /* 获取 pptr 的值 */
   fmt.Printf("变量 a = %d\n", a )
   fmt.Printf("指针变量 *ptr = %d\n", *ptr )
   fmt.Printf("指向指针的指针变量 **pptr = %d\n", **pptr)

编译运行以上 Go 语言范例,输出结果如下

$ go run main.go
变量 a = 3000
指针变量 *ptr = 3000
指向指针的指针变量 **pptr = 3000