Go语言指针用法详解
作者:奋斗的大橙子 时间:2023-08-05 17:06:36
结合这个例子分析一下
结果:
结合以往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
*&可以抵消
来源:https://www.cnblogs.com/dcz2015/p/10096503.html
标签:Go,Golang,指针
0
投稿
猜你喜欢
你需要知道的CSS3 动画技术[译]
2009-12-30 17:02:00
PLSQLDeveloper登录远程连接Oracle的操作
2023-07-23 03:34:22
一文速学Python+Pyecharts绘制树形图
2023-07-28 12:05:27
Yahoo!网站性能最佳体验的34条黄金守则—内容
2008-05-13 12:14:00
一文详解go mod依赖管理详情
2023-07-13 04:35:06
SQL Server 2005数据库批量更新解决办法
2009-04-11 16:12:00
Windows下ORACLE 10g完全卸载的方法分析
2012-07-11 16:09:26
asp 小偷采集程序原理与常用函数方法
2011-03-06 10:36:00
go日志库中的logrus
2023-07-21 13:48:02
CSS扫盲(一): padding
2009-08-04 17:58:00
浅析SQL Server与Oracle数据库的区别
2007-10-31 11:39:00
Asp中如何设计跨越域的Cookie
2008-10-24 09:46:00
Python 元组(Tuple)操作详解
2023-06-28 15:36:39
window.top[_CACHE]实现多个jsp页面共享一个js对象
2023-07-18 09:25:14
css2.1实现多重背景和边框效果
2010-06-23 19:02:00
ASP中使用FileSystemObject时提高性能的一个小技巧
2008-06-08 13:09:00
sqlplus登录\\连接命令、sqlplus命令的使用大全
2023-07-01 08:16:31
柳永法:vbs或asp采集文章时网页编码问题
2009-02-04 10:50:00
Logo 设计准则[译]
2009-07-22 21:05:00
Javascript操作cookie的类
2007-08-23 09:36:00