Go 指针的基本概念

Go指针详解:地址与值操作

1).我们在代码中申明一个变量,变量里面存的就是值,也叫值类型

package main
import "fmt"

func main() {

 var i int = 10
 fmt.Println("i的值=",i)
}

说明:他在内存中怎么存的呢

2)获取变量的地址,用&,比如说获取上面的 var i int ,获取i的地址,就是&i

说明:

1,i在内存中的地址就是0xc04202e080,i也就是0xc04202e080,

2.可以理解为,i是我们代码中的写的,我们认识,但是在内存中生成存储空间的时候,内存不认识,所以将i编译成内存认识的,所以就编程了0xc04202e080这种内存认识的地址

3)申明指针类型的变量,指针变量中存的是某一个变量的地址,这个地址指向内存中存的正在的值

package main
import "fmt"

func main() {

   var i int = 10
   fmt.Println("i的地址=",&i)  

  
  //prt 是一个指针变量
  //prt 的指针类型是 *int
  //prt 指针变量保存的是变量i的地址,变量i的地址怎么获取,使用&i
  //申明一个指针变量
  var prt *int = &i
  fmt.Println("prt 指针变量保存的值=",prt)

}

 说明:指针变量内存示意图

4)怎么获取指针变量所指向的值呢,使用 *,例如:var prt *int 使用*prt获取prt指向的值

package main
import "fmt"

func main (){
  
 var i int = 10

 var prt *int = &i

 fmt.Printf("prt指针变量指向的值=",*prt)
 
 //打印出来的值是10

}

5:)案例演示

package main
import "fmt"

func main() {
  var a int = 300  //申明a变量,值是300
  var b int = 400  //申明b变量,值是400
  
  var prt *int = &a //申明prt指针变量,只是变量a的地址

  //获取指针指向关联地址的值,也就是a的值,并重新赋值为100,所以a变量在内存中保存的值就从300变成100
  *prt = 100 

   prt = &b //将prt指针变量中保存的a变量的地址,改成了b变量的地址
  *prt = 200//然后将地址指向的值,也就是b变量的值,从400改成了200

 fmt.Printf("a=%d,b=%d,prt=%d,*prt=",a,b,prt,*prt)
 //打印出的值
 a=100  b = 200 prt = b的地址 *prt = 200

}

注意:指针修改的值,是保存在内存空间中的值,他是直接将从新赋值的值,覆盖内存中的旧值,所以使用指针变量重新赋值后,旧的值就不存在了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值