Go 语言指向指针的指针
如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。
当定义一个指向指针的指针变量时,第一个指针存放第二个指针的地址,第二个指针存放变量的地址:
指向指针的指针变量声明格式如下:
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
Yvettre
dyf***ttre@gmail.com
指向指针的指针的指针
执行结果:
a: 1 ptr1 0xc0420140b0 ptr2 0xc042004028 ptr3 0xc042004030 *ptr1 1 **ptr2 1 **(*ptr3) 1Yvettre
dyf***ttre@gmail.com
tscheung
366***550@qq.com
三重指针及其对应关系:
例子:
执行结果:
tscheung
366***550@qq.com
冰河
ofy***@qq.com
大家写的还是有点乱,我贴一个简洁的。
多级指针本质上就是一个指针链。
这段代码大家自行执行,打印结果一清二楚。
冰河
ofy***@qq.com