登录 主页

go - 指针 - 指针取值

2024-07-31 09:54PM

参考:https://www.topgoer.com/go/指针取值

指针取值

在对普通变量使用&操作符取地址后会获得这个变量的指针,然后可以对指针使用*操作,也就是指针取值,代码如下:

package main

import "fmt"

func main() {
  // 指针取值
  a := 10
  b := &a // 取变量a的地址,将指针保存到b中
  fmt.Printf("type of b:%T\n", b)
  fmt.Printf("value of b:%v\n", *b)
  c := *b // 指针取值(根据指针去内存取值)
  fmt.Printf("type of c:%T\n", c)
  fmt.Printf("value of c:%v\n", c)
}

输出如下:

$ go run dereferec_pointer.go 
type of b:*int
value of b:10
type of c:int
value of c:10

总结:取地址操作符&和取地址操作符*是一对互补操作符,&取出地址,*根据地址取出地址指向的值。

变量、指针地址、指针变量、取地址、取值的相互关系和特性如下:

1.对变量进行取地址(&)操作,可以获得这个变量的指针变量。

2.指针变量的值是指针地址。

3.对指针变量进行取值(*)操作,可以获得指针变量指向的原变量的值。

指针传值示例:

package main

import "fmt"

func modify1(x int) {
    x = 100
}

func modify2(x *int) {
    *x = 100
}

func main() {
    a := 10
    modify1(a)
    fmt.Println(a) // 10
    modify2(&a)
    fmt.Println(a) // 100
}

输出结果如下:

$ go run pointer_value_transfer.go 
10
100

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论