文章目录
零、概述:指针 vs. 引用(类比其他语言)
| 特性 | 指针(Go) | 引用(C++) |
|---|---|---|
| 本质 | 存储地址的变量 | 变量的别名(无独立地址) |
| 空值 | 支持nil |
必须指向有效变量 |
| 操作符 | &取地址,*解引用 |
&声明引用,直接操作 |
| 可变性 | 可重新指向其他变量 | 初始化后不可更改指向 |
一、指针基础概念
Go语言中的指针(Pointer)用于存储变量的内存地址,是实现高效数据操作的重要工具。与C语言相比,Go指针具有以下特点:
- 安全性:不支持指针运算(如指针加减整数),避免非法内存访问。
- 简化性:通过
&取地址、*解引用,语法简洁。 - 空指针:默认值为
nil,避免野指针问题。
指针与变量的关系
- 变量:存储数据值,占据内存空间,可通过
&获取地址。a := 10 // 变量a存储值10 addr := &a // addr存储a的地址(如0xc00001a0b8) - 指针:专门存储地址的变量,类型为
*T(T为目标数据类型)。var ptr *int // 声明指向int的指针 ptr = &a // 指针ptr指向变量a的地址
二、指针声明与初始化
1. 声明指针变量
var ptr *int // 指向int的指针
var strPtr *string // 指向string的指针
var arrPtr *[5]int // 指向数组的指针
2. 初始化为空指针
var nilPtr *int
Go语言指针:声明、操作与注意事项

最低0.47元/天 解锁文章
657

被折叠的 条评论
为什么被折叠?



