Go指针理解(1)

@爱耍流氓的唐僧  April 7, 2021

1.指针零值
当定义一个指针变量时,

var p *int

它的零值是nil,如果p是一个指针变量,p!=nil说明p指向了一个变量,指针也是可以比较的,当两个指针同时指向同一个变量的时候
或者两者都等于nil的情况才相等。

2.函数传递指针

var p = f()

func f() *int {
    v :=1
    return &v
}

每次调用f都会返回不同的值

fmt.Println(f()==f())//false

每次每次调用f都会开辟新的空间给变量v,所以每次调用返回的地址都不一样
微信图片_20210407094503.png

3.函数指针的复制

func incr(p *int) int{
    *p++
    //fmt.Println(&p)//看下是不是每次调用的时候都开辟新的指针型变量
    return *p
}

v:=1
incr(&v)
fmt.Println(incr(&v))

微信图片_20210407094612.png


添加新评论