Go 语言指向指针的指针


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

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

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

  1. var ptr **int;

以上指向指针的指针变量为整型。

访问指向指针的指针变量值需要使用两个 * 号,如下所示:

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. func main() {
  6.  
  7. var a int
  8. var ptr *int
  9. var pptr **int
  10.  
  11. a = 3000
  12.  
  13. /* 指针 ptr 地址 */
  14. ptr = &a
  15.  
  16. /* 指向指针 ptr 地址 */
  17. pptr = &ptr
  18.  
  19. /* 获取 pptr 的值 */
  20. fmt.Printf("变量 a = %d\n", a )
  21. fmt.Printf("指针变量 *ptr = %d\n", *ptr )
  22. fmt.Printf("指向指针的指针变量 **pptr = %d\n", **pptr)
  23. }

以上实例执行输出结果为:

  1. 变量 a = 3000
  2. 指针变量 *ptr = 3000
  3. 指向指针的指针变量 **pptr = 3000