区块链技术语言(十五):Go语言指针

栏目: C · 发布时间: 6年前

内容简介:本文完,获取更多资讯,敬请关注区块链工程师。

1

基本概念

1.1 内存地址

电脑存储器由一个个存储单元构成,为了对存储器进行有效的管理,就需要对各个存储单元编号,即给每个单元赋予一个地址码,这叫编址。计算机里每个内存单元的地址码就是这个内存单元的内存地址。

1.2 指针变量

通过内存单元的内存地址能找到这个内存单元,那么这个内存地址叫作指针(Pointer),而存放该地址的变量(通常简写为ptr),叫做指针变量。

1.3 变量和指针变量的关系

程序中通过定义一个变量来申请一块数据存储空间,变量名即对一块数据存储空间命名。而在该变量前加一个取地址符“&”就可以获得该存储空间的地址。

指针变量存储了内存地址。在指针变量前加一个取值运算符“*”就可以获得内存单元储存的值。

指针和变量的关系如图1所示。

区块链技术语言(十五):Go语言指针

指针和变量的关系如以下代码所示:

区块链技术语言(十五):Go语言指针

1.4 空指针

指针被定义后却没有分配到任何变量的地址,它的值为nil,而非NULL。

区块链技术语言(十五):Go语言指针

2

指针的基本操作

2.1 指针变量的声明

声明指针变量的关键词是var。指针变量存储的是内存地址,其指向的内存空间里存储的值的类型为Type,则指针变量类型为*Type。声明格式如下:

区块链技术语言(十五):Go语言指针

2.2 指针变量的使用流程

指针变量声明-------->为指针变量赋值-------->访问指针变量中地址指向的值。

区块链技术语言(十五):Go语言指针

3

new函数

new函数是一个用来分配内存的内建函数(就是由语法规定存在的函数),其格式为:

区块链技术语言(十五):Go语言指针

new函数并不初始化内存,传入的参数是类型(Type),返回的是指向新分配内存所属类型的零值的指针(*Type),即这块内存空间的地址(该内存空间存储的是该类型的零值)。

区块链技术语言(十五):Go语言指针

4

指针作为函数参数

指针作为函数参数时,为引用传递。自定义函数对形参进行的修改,也会影响到实际参数的值。

区块链技术语言(十五):Go语言指针

5

指向指针的指针

5.1 指向指针的指针变量

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

如图所示,第一个指针存放第二个指针的地址,第二个指针存放变量的地址。

区块链技术语言(十五):Go语言指针

5.2 指向指针的指针变量的声明格式

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

区块链技术语言(十五):Go语言指针

示例如下:

区块链技术语言(十五):Go语言指针

原文链接:区块链技术语言(十五):Go语言指针

参考资料

[1] https://baike.baidu.com/item/%E6%8C%87%E9%92%88/2878304?fr=aladdin

本文完,获取更多资讯,敬请关注区块链工程师。

区块链技术语言(十五):Go语言指针

来源:链块学院

本文由布洛克专栏作者发布,代表作者观点,版权归作者所有,不代表布洛克科技观点

——TheEnd——

关注“布洛克科技”

区块链技术语言(十五):Go语言指针


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

图解TCP/IP : 第5版

图解TCP/IP : 第5版

[日]竹下隆史、[日]村山公保、[日]荒井透、[日]苅田幸雄 / 乌尼日其其格 / 人民邮电出版社 / 2013-7-1 / 69.00元

这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握TCP/IP的基本技能。 书中讲解了网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,引导读者了解和掌握TCP/IP,营造一个安全的、使用放心的网络环境。 本书适合计算机网络的开发、管理人员阅读,也可作为大专院校相关专业的教学参考......一起来看看 《图解TCP/IP : 第5版》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具