Golang指针基本介绍及使用案例

1、指针的相关概念说明函数

  • 变量:是基本类型,变量存的就是值,也叫值类型
  • 地址:用于引用计算机的内存地址,可理解为内存地址的标签,通俗一点讲就是一间房在小区里的门牌号。以下图①
  • 指针:指针变量存的是一个地址,这个地址指向的空间存的才是值(表示地址的指向,指针是一个指向另外一个变量内存地址的值)。以下图②
  • &:取地址符,例如:{指针}:=&{变量}。以下图②
  • * :取值符,例如:{变量}:=*{指针}。以下图②

图①spa

图②3d

2、指针的使用案例指针

指针使用流程:code

  • 定义指针变量。
  • 为指针变量赋值。
  • 访问指针变量中指向地址的值。

在指针类型前面加上 * 号(前缀)来获取指针所指向的内容。blog

案例一ip

package main import "fmt" func main() { var a int= 10   /* 声明实际变量 */
   var ip *int        /* 声明指针变量 */ ip = &a  /* 指针变量的存储地址 */ fmt.Printf("a 变量的地址是: %x\n", &a ) /* 指针变量的存储地址 */ fmt.Printf("ip 变量的存储地址: %x\n", ip ) /* 使用指针访问值 */ fmt.Printf("*ip 变量的值: %d\n", *ip ) }
a变量的地址是:0xc042052058 ip变量的存储地址是0xc042052058 *ip变量的值是:10

案例二内存

 

package main import "fmt"
// 咱们用两个不一样的例子来演示指针的用法 // zeroval函数有一个int类型参数,这个时候传递给函数的是变量的值
func zeroval(ival int) { ival = 0 } // zeroptr函数的参数是int类型指针,这个时候传递给函数的是变量的地址 // 在函数内部对这个地址所指向的变量的任何修改都会反映到原来的变量上。
func zeroptr(iptr *int) { *iptr = 0 } func main() { i := 1 fmt.Println("initial:", i) zeroval(i) fmt.Println("zeroval:", i) // &操做符用来取得i变量的地址
    zeroptr(&i) fmt.Println("zeroptr:", i) // 指针类型也能够输出
    fmt.Println("pointer:", &i) }

 

initial: 1 zeroval: 1 zeroptr: 0 pointer: 0xc042052058

 

空指针it

package main import ( "fmt" ) func main(){ //下面一行代码注释就是空指针,那么值为0
    var a int = 1
    var ip *int = &a fmt.Printf("ip的值为:%x", ip) if (ip == nil) { fmt.Printf("是空指针") } else { fmt.Printf("非空指针") } }
相关文章
相关标签/搜索