前言
Go语言的指针学习笔记
指针的声明与定义
声明指针变量
- 声明一个指针,默认为空指针(
nil
),默认值为nil,值为0
- 访问空指针会报错
- 0~255为系统占用,不可以读写,如果读写会报错
数据类型
:需要与所存储的数据类型对应
定义指针变量
&变量
:通过&
操作符,获取变量地址,赋值给指针变量
定义野指针
- 指针变量指向了一个未知的内存地址
- 访问野指针会报错
1
| var p *数据类型 = 0xFFFFFFFF
|
为指针变量创建一块内存
- 在堆区开辟空间,将地址值赋值给指针
- 其内存的空间的大小为指定数据类型的大小,其默认值为数据库类型默认值
- 在Go语言中只需要开辟空间,不需要释放空间
指针的操作
- Go语言的指针类型变量既拥有指针高效访问的特点,又不会发生指针偏移和运算,从而避免了非法修改关键性数据的问题
取址
内存地址赋值
取值
获取指针指向的值
修改指针指向的值
函数参数地址传递
1 2 3
| func 函数名(a *int, b *int) { *a, *b = *b, *a }
|
数组指针
声明数组指针
定义数组指针
1
| var p *[数组长度]数据类型 = &数组名
|
通过指针找到数组元素
切片指针
声明切片指针
定义切片指针
通过指针找到切片元素
通过指针获取切片长度
通过指针遍历切片
1 2 3
| for k, v := range *p { ... }
|
与指针相关的输出
输出数据类型
输出地址
结构体指针
声明结构体指针
定义结构体指针
通过结构体操作结构体属性
多级指针
二级指针
完成
参考文献
哔哩哔哩——喔咔咔耶耶
哔哩哔哩——Python路飞