go语言学习笔记 — 基础 — 基本数据类型 — 指针(1):一文详解go指针

本文介绍了Go语言中的指针基础知识,包括类型指针、取指针地址、指针类型、指针变量的值、指针取值操作以及如何使用new()函数创建指针。通过示例说明了如何用指针修改变量值,强调了Go中指针的安全性和高效性。
摘要由CSDN通过智能技术生成

说到指针,许多人感到“谈指针色变”,对指针偏移、指针运算、指针转换非常恐惧。其实,指针是C族语言(C/C++)极高性能的根本,在操作大块数据和做内存地址偏移时,方便快捷。C族语言(C/C++)中指针被诟病的原因是 指针的运算内存释放

go中的指针分为两个重要方面:

  • 类型指针。类型指针拥有指针的高效访问:传递数据使用指针,而不是采用内存拷贝;使用类型指针修改(其指针地址)指向的普通变量值。类型指针不能运算和偏移
  • 切片。由指向起始元素的原始指针、元素数量和容量构成。切片比原始指针更安全高效,当切片越界时,go运行时会报panic,并打出堆栈,原始指针只能崩溃

1. 几个名词和过程

  • 普通变量

初始化普通变量,类型为T。

  • 取(内存)地址

使用&操作符,对普通变量取(内存)地址,得到普通变量的指针(变量)。

  • 指针(变量)

对普通变量取地址后(&(普通变量)),得到指针变量。在程序运行时,每个变量都会被分配内存,拥有内存地址。指针(变量)的值就是这个内存地址,也叫指针地址,这就是指针(变量)的本质。

注: 每个普通变量都有内存地址,指针的值就是这个内存地址。

  • 指针类型

使用&(普通变量),对普通变量取(内存)地址后,得到指针变量,其类型为*T,即T的指针类型。

  • 指针地址

指针变量的值是指针地址。指针地址带有"0x"的十六进制前缀。指针地址在64位平台上是64位内存地址,在32位平台上是32位地址。

  • 指针(变量)取值

使用*操作符,对指针变量取值,从指针变量中获取(指针地址指向的)原普通变量的值。

  • 操作符&*

取(内存)地址操作符&和取(指针变量)值操作符*是一对互补操作符:

1)使用&取出普通变量的(内存)地址得到指针变量

2)使用*对指针变量进行取值操作,获得指针指向的原普通变量值

3)*(*T)取出指针变量指向的原普通变量值,即*(*T)指向原来T类型的普通变量


2. 指针(变量):取指针地址(&)和指针类型(*T)

在程序运行时,每个变量都拥有一个(内存)地址,这个地址表示变量在内存中的位置。在go中,我们使用&对变量进行取地址操作。格式如下:

ptr := &ins    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值