美文网首页
Go语言指向指针的指针

Go语言指向指针的指针

作者: 醉倾城1 | 来源:发表于2020-09-03 08:46 被阅读0次

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

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

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

var ptr **int;

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

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

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)
}

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

变量 a = 3000
指针变量 *ptr = 3000
指向指针的指针变量 **pptr = 3000

三重指针及其对应关系:

pt3 - > pto - > ptr - >变量a

例子:

package main

import "fmt"
func main(){
    var a int = 5
    //把ptr指针 指向ss所在地址
    var ptr *int = &a
    //开辟一个新的指针,指向ptr指针指向的地方
    var pts *int = ptr 
    //二级指针,指向一个地址,这个地址存储的是一级指针的地址
    var pto **int = &ptr
    //三级指针,指向一个地址,这个地址存储的是二级指针的地址,二级指针同上
    var pt3 ***int = &pto
    fmt.Println("a的地址:",&a,
                "\n 值", a, "\n\n",

                "ptr指针所在地址:",&ptr,
                "\n ptr指向的地址:",ptr,
                "\n ptr指针指向地址对应的值",*ptr,"\n\n", 

                "pts指针所在地址:",&pts,
                "\n pts指向的地址:", pts,
                "\n pts指针指向地址对应的值:",*pts,"\n\n", 

                "pto指针所在地址:",&pto,
                "\n pto指向的指针(ptr)的存储地址:",pto, 
                "\n pto指向的指针(ptr)所指向的地址: " ,*pto, 
                "\n pto最终指向的地址对应的值(a)",**pto,"\n\n",

                "pt3指针所在的地址:",&pt3,
                "\n pt3指向的指针(pto)的地址:",pt3,//等于&*pt3,
                "\n pt3指向的指针(pto)所指向的指针的(ptr)地址", *pt3, //等于&**pt3,
                "\n pt3指向的指针(pto)所指向的指针(ptr)所指向的地址(a):",**pt3, //等于&***pt3,
                "\n pt3最终指向的地址对应的值(a)", ***pt3)
}

执行结果:

a的地址: 0xc00009a008
值 5

ptr指针所在地址: 0xc000092010
ptr指向的地址: 0xc00009a008
ptr指针指向地址对应的值 5

pts指针所在地址: 0xc000092018
pts指向的地址: 0xc00009a008
pts指针指向地址对应的值: 5

pto指针所在地址: 0xc000092020
pto指向的指针(ptr)的存储地址: 0xc000092010
pto指向的指针(ptr)所指向的地址: 0xc00009a008
pto最终指向的地址对应的值(a) 5

pt3指针所在的地址: 0xc000092028
pt3指向的指针(pto)的地址: 0xc000092020
pt3指向的指针(pto)所指向的指针的(ptr)地址 0xc000092010
pt3指向的指针(pto)所指向的指针(ptr)所指向的地址(a): 0xc00009a008
pt3最终指向的地址对应的值(a) 5

相关文章

  • Go语言 指针

    指针 概念 Go语言的指针和C语言一样也是用来保存地址的变量 格式 普通指针 指向数组的指针 注意点 GO语言中只...

  • Go语言指向指针的指针

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

  • 13-Go语言指针和方法

    指针 普通数据类型指针 Go语言中的普通指针和C语言中的普通指针一样, 通过指针也可以间接操作指向的存储空间 Go...

  • Go结构-2

    指针 普通指针 通过指针也可以间接操作指向的存储空间 指向数组的指针 可以通过指针间接操作数组 注意点:Go语言中...

  • Go语言之函数指针和指针函数

    函数指针 一个指针,指向了一个函数的指针因为go语言中,function,默认看做一个指针,没有*slice,ma...

  • 对Java中HashCode方法的深入思考

    前言 最近在学习 Go 语言,Go 语言中有指针对象,一个指针变量指向了一个值的内存地址。学习过 C 语言的猿友应...

  • go语言值传递与指针传递

    go语言指针 go语言作为静态编译型语言,具有指针类型,但是不提供对指针的移位危险操作,防止指针的越界等问题。 g...

  • Go语言-指针

    Go语言中的指针不同于C语言,Go语言的指针使用方法要简单很多。当然和C语言从指针定义到指针的使用都有很大的不同。...

  • Golang 指针

    指针 区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。Go语言当中的指针涉及到三个点:指...

  • 六、Go指针

    六、Go语言指针 1.使用&访问变量在内存中地址 2.指针 一个指针变量指向一个值的内存地址。 与变量和常量相同,...

网友评论

      本文标题:Go语言指向指针的指针

      本文链接:https://www.haomeiwen.com/subject/hycnsktx.html