指针的定义

- 指针是一种存储变量内存地址(Memory Address)的变量

 

- 上图所示,变量 b 的值为 156,而 b 的内存地址为 0x1040a124。变量 a 存储了 b 的地址。简称 a 指向了 b; a 就是b的指针

 

 

指针的声明

- 指针的类型为: *T; 该指针指向了类型为T的变量;

 

- &: 用于获取变量的内存地址;

 

- 每次编译的过程,内存中存在的变量的地址也会不同;

 

- 声明的简单示例:

 

指针的零值以及解引用

- 指针的零值:为nil

 

- 解引用:

  - 获取指针指向的内存地址中的值;

  - 语法: *指针变量

  - 示例:

 

- 利用解引用 更该变量的值:

  - 示例:

  - 注意 *a 是b的值, 所以*a++  实际上是 b++, 但是a 指向的原来的b的值的内存地址,不会发生变化;

  - 问? 为什么a的内存地址没有发生变化? 在*a++后, a仍然指向的是55的内存地址,而 *a 不应该是解引用出来是55 嘛? 为什么会变成56?    

    - 因为这里更改的实际是该内存地址的值,而不是说将该指针指向了新的值;

    - 也就是说,在 *a++ 后  内存0xc000058080位置中存放的值变成了56, 所以才会这样!!!

 

 

向函数传入指针参数

- 实参中接收指针:

  - 示例:

 

- 返回指针变量:

  - 示例:

 

- 尽量不要在函数中传递 指针数组;

  - 切片会更方便;

  - 传递指针数组示例:  

 

 

  - 传递切片示例: