go的指针学习
2024-09-08 10:36:31
1)指针是什么?
一个指针变量可以指向任何一个值的内存地址它指向那个值的内存地址
说白了就是可以先存储内存的地址,在用内存地址找到对应值
2)go中的使用
Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。
Go 语言的取值得地址符是 *,放到一个地址前使用就会返回相应内存对应的值。
package main import "fmt" func main() {
var a int = 10 fmt.Printf("变量的地址: %x\n", &a)
}
3)指针也可以声明类型
var ip *int /* 指向整型*/
var fp *float32 /* 指向浮点型 */
4)根据内存地址获取值
package main import "fmt" func main() {
var a int = 2000
var ip *int /* 声明指针变量 */
ip = &a /* 指针变量的存储地址 */
fmt.Printf("变量的地址: %x\n", &a)
fmt.Printf("根据地址获取值为: %d\n", *ip) //注意为%d整型
}
5)go的空指针,一个指针变量通常缩写为 ptr。
if(ptr != nil) /* ptr 不是空指针 */
if(ptr == nil) /* ptr 是空指针 */
6)指针数组,原理类似
package main import "fmt" const MAX int = 3 func main() {
a := []int{10,100,200}
var i int
var ptr [MAX]*int; for i = 0; i < MAX; i++ {
ptr[i] = &a[i] /* 整数地址赋值给指针数组 */
} for i = 0; i < MAX; i++ {
fmt.Printf("a[%d] = %d\n", i,*ptr[i] )
}
}
输出结果
a[0] = 10
a[1] = 100
a[2] = 200
最新文章
- C++中 引入虚基类的作用
- 使用scanner工具类来获取用户输入的信息
- windows 下安装redis并且测试(php)
- iOS instruments trace文件解析方案
- perl split 的一种特殊用法
- PHP 小方法之 显示 今天 昨天 上周 上月 近三月 的时间
- try...except 错误记录添加logging
- Becoming a Hacker...
- [Everyday Mathematics]20150210
- 三、FreeMarker 模版开发指南 第三章 模版
- C++学习笔记(六):复杂数据类型(string、容器和STL)
- WPF线程获取UI线程
- the identity used to sign the executable is no longer valid.解决方法
- [Usaco2009 Feb]Revamping Trails 堆优化 Dijkstra
- 出现Deprecated: Function ereg_replace() is deprecated in 的原因及解决方法
- FZU 2089 数字游戏
- Unity安装问题
- 介绍CPU,内存,硬盘,指令以及他们之间的关系
- SD第九届省赛B题 Bullet
- CAShapeLayer绘图
热门文章
- Redis in python, how do you close the connection?
- 无参数的lambda匿名函数
- hdu4604 Deque(最长上升子序列变形)
- Linux Gcc编译错误(转载)
- ios http2客户端访问nginx失败bug
- [SDOI2019] 移动金币
- C# DateTime.Now 详解
- #undef及其用法
- $Edmonds-Karp$[网络流]
- Hdu 5336 XYZ and Drops (bfs 模拟)