Go语言指针用法详解

作者:奋斗的大橙子 时间:2023-08-05 17:06:36 

结合这个例子分析一下

Go语言指针用法详解

结果:

Go语言指针用法详解

结合以往C语言的基础,画了一张图来解释为什么会有上面这些值的出现。先查看下Go中的这两个运算符是啥吧。

Go语言指针用法详解

①对于所有带a的结果

var a int = 1 定义了一个变量a值为1,如下图所示:

&a就是这个存放a变量值的地址

*&a 就是指向&a的一个指针,*&a = a = 1

Go语言指针用法详解

②所有带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

Go语言指针用法详解

③所有带c的结果

Go语言指针用法详解

如上图所示:

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

以上总结一下:

Go语言指针用法详解

&通过变量取地址 * 通过地址取值

&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
  • asp之家 网络编程 m.aspxhome.com