2-16 指针

指针就是地址

%p,地址占位符。

&value 对值取地址。

*ptr  对地址取值。

func main() {

//声明变量a,系统会开辟一片内存(地址),里面存的值是123
var a int = 123
fmt.Printf("a的类型是%T\n", a)
fmt.Printf("a的值是%d\n", a)
fmt.Printf("a的地址是%p\n", &a)

var aPtr = &a

//aPtr的类型是int型指针
fmt.Printf("aPtr的类型是%T\n",aPtr)
fmt.Println(*aPtr)

//修改aPtr地址指向的值
*aPtr = 456
fmt.Println(*aPtr)
fmt.Println(a)

}

执行结果

指针的类型不可更改

*aPtr = 456
fmt.Println(*aPtr)
fmt.Println(a)

//aPtr指向的值是int,不能讲int外的数据类型赋值给aPtr
var x = "你好"
//会报编译错误
*aPtr = x
扫描二维码关注公众号,回复: 6495339 查看本文章

指向指针的指针(二级指针)

func main() {

    //将x的地址赋值给mPtr
    var x = 123
    var mPtr *int = &x
    //将mPtr变量的地址赋值给MmPtr
    MmPtr := &mPtr
    fmt.Println(MmPtr)
    
    //打印MmPtr的类型。
    fmt.Printf("MmPtr的类型是%T", MmPtr)

    // 打印x的值
    fmt.Println(*mPtr)
    fmt.Println(*(*MmPtr))
    fmt.Println(**MmPtr)
}

 执行结果

猜你喜欢

转载自www.cnblogs.com/paad/p/11028358.html