Golang指针如何使用,与指针什么不同
结合这个例子分析一下
结果:
结合以往C语言的基础,画了一张图来解释为什么会有上面这些值的出现。先查看下Go中的这两个运算符是啥吧。
①对于所有带a的结果
var a int = 1 定义了一个变量a值为1,如下图所示:
& a就是这个存放a变量值的地址
*& a 就是指向& a的一个指针,*& a = a = 1
②所有带b结果
var b *int = & a
类似C语言的 int *b = & a 定一个指向整形变量的指针b,b指向了a的地址
所以:
b = & a = 0xc04203c1d0
& b = 0xc042058018 & b是b这个指针变量的真实地址,就是执行后那个
*& b = *(& b) = b = & a = 0xc04203c1d0
*b = *& a = a = 1
③所有带c的结果
如上图所示:
var c **int = & b
实际上是定义了一个指向整形指针的指针变量
c = & b = 0xc042058018
*c = *& b = b = & a = 0xc04203c1d0
& c 是这个变量的真实地址,这里显示的就是运行的结果 0xc042068020
*& c 有经验可以发现 *& 直接消掉了 = c = 0xc042058018
**c咋一看不知道是什么,其实可以通过换算来进行求值
**c = **& b = *b = *& a = a = 1
***& *& *& *& *& c 这个可以先消去*& **c = 1
④关于x
x = *b = *& a = a = 1
以上总结一下:
& 通过变量取地址 * 通过地址取值
& a先得到地址,然后“ * xxx地址”得到该地址处变量的值,即a
*& 可以抵消
感谢各位的阅读,以上就是“Golang指针如何使用,与指针什么不同”的内容了,通过以上内容的阐述,相信大家对Golang指针如何使用,与指针什么不同已经有了进一步的了解,如果想要了解更多相关的内容,欢迎关注网络,网络将为大家推送更多相关知识点的文章。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Golang指针如何使用,与指针什么不同
本文地址: https://pptw.com/jishu/652559.html