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

  

最新文章

  1. C++中 引入虚基类的作用
  2. 使用scanner工具类来获取用户输入的信息
  3. windows 下安装redis并且测试(php)
  4. iOS instruments trace文件解析方案
  5. perl split 的一种特殊用法
  6. PHP 小方法之 显示 今天 昨天 上周 上月 近三月 的时间
  7. try...except 错误记录添加logging
  8. Becoming a Hacker...
  9. [Everyday Mathematics]20150210
  10. 三、FreeMarker 模版开发指南 第三章 模版
  11. C++学习笔记(六):复杂数据类型(string、容器和STL)
  12. WPF线程获取UI线程
  13. the identity used to sign the executable is no longer valid.解决方法
  14. [Usaco2009 Feb]Revamping Trails 堆优化 Dijkstra
  15. 出现Deprecated: Function ereg_replace() is deprecated in 的原因及解决方法
  16. FZU 2089 数字游戏
  17. Unity安装问题
  18. 介绍CPU,内存,硬盘,指令以及他们之间的关系
  19. SD第九届省赛B题 Bullet
  20. CAShapeLayer绘图

热门文章

  1. Redis in python, how do you close the connection?
  2. 无参数的lambda匿名函数
  3. hdu4604 Deque(最长上升子序列变形)
  4. Linux Gcc编译错误(转载)
  5. ios http2客户端访问nginx失败bug
  6. [SDOI2019] 移动金币
  7. C# DateTime.Now 详解
  8. #undef及其用法
  9. $Edmonds-Karp$[网络流]
  10. Hdu 5336 XYZ and Drops (bfs 模拟)