指针的概念

指针

一个指针变量可以指向任何一个值的内存地址,它指向的那个值的内存地址,在32位机器上占用4个字节,在64位机器上占用8个字节,并且与它所指向的值的大小无关。

*号

使用一个指针引用一个值被称为间接引用

总结:

  • 主要用于管理内存
  • 指针是一个特殊的变量
  • 存储的是另一个变量的内存地址
  • 指针是存储另一个变量的内存地址的变量
  • 我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地址
  • 一个指针变量可以指向任何一个值的内存地址它指向那个值的内存地址。



在上面的图中,变量b的值为156,存储在内存地址0x1040a124。变量a持有b的地址,现在a被认为指向b。

指针的作用及应用场景

作用
  1. 节省内存空间,提高执行效率(当操作的数据量较大规模时)
  2. 访问变量的值
应用场景
  1. 修改变量的值
  2. 访问变量的值

获取变量的地址

Golang语言的获取地址符号是&,放到一个变量前使用就会返回相应变量的内存地址

指针变量操作

  • 先定义变量,再定义指针去取变量的地址,那么这个变量存储的就是地址,实际的值是这个地址指向的空间
取地址操作符&取值操作符**int*float32

空指针

nilnil指针ptr

空指针判断:

注意事项:

  1. 值类型一般都有对应的指针类型,格式 数据的类型 比如int-> int float64->*float64
  2. 0x开头的十六进制的一组数据
  3. go语言中引用类型有哪些?指针,slice,map,chan,interface
  4. 值类型:变量存储的值是值类型,通常在栈中分配
  5. 引用类型:变量存储的是地址,这个地址对应的空间存储的才是实际的值,一般引用类型在堆中分配,一旦无任何变量来引用这块空间,那么会被操作系统进行垃圾回收。
  6. go语言的指针没有指针运算,因为指针的乱引用会导致的内存泄漏,以及引发一连串程序的崩溃
  7. 修改指针指向变量的值,但是不会修改地址,通过指针改掉了指向变量对应的值
  8. 一个指针变量可以指向任何一个值的内存地址
  9. 指针也可以指向另一个指针,并且可以进行任意深度的嵌套,导致你可以有多级的间接引用,但在大多数情况这会使你的代码结构不清晰
  10. 当一个指针被定义后没有分配到任何变量时,它的值为 nil。对一个空指针的反向引用是不合法的,并且会使程序崩溃


最后

EntrepreneurialG