指针

什么是指针?

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

如上图所示,变量 b 的值为 156,而 b 的内存地址为 0x1040a124。变量 a 存储了 b 的地址。我们就称 a 指向了 b。 

三点需注意

    1. &取地址符号
    2. * 放在类型旁边,表示指向这个类型的指针
    3. * 放在变量旁边,表示解引用(反解)
package main

import "fmt"

func main(){
    a := 10
    b := &a  //b就是一个指针
    fmt.Println(b)  //a地址:0xc000058080
}

指针的零值

指针的零值是 nil

package main

import "fmt"

func main(){

    var a *int
    fmt.Println(a)
}

向函数传递指针参数

package main

import (  
    "fmt"
)

func change(val *int) {  
    *val = 55
}
func main() {  
    a := 58
    fmt.Println("value of a before function call is",a)
    b := &a
    change(b)
    fmt.Println("value of a after function call is", a)
}

在上面程序中的第 14 行,我们向函数 change 传递了指针变量 b,而 b 存储了 a 的地址。程序的第 8 行在 change 函数内使用解引用,修改了 a 的值。该程序会输出:

value of a before function call is 58  
value of a after function call is 55
原文地址:https://www.cnblogs.com/xiongying4/p/12025228.html