package main
// 指针的学习
import "fmt"
type P struct {
name string
}
/**
值传递
在值传递过程中,实参和形参位于内存中两个不同地址中,
实参先自己复制一次拷贝,再把拷贝复制给形参。
所以,在值传递过程中,形参的变化不会对实参有任何的影响
*/
func mm(pp P) {
pp.name = "LiSi"
}
/**
地址传递
实参是指针 在函数调用的时候,实参传递给你的是指针地址,
地址一样也就意味着实参和形参是一样的,当你的形参发生改变时,实参也会发生改变
*/
func m2(pp *P) {
pp.name = "LiSi"
}
func main() {
var x = P{"zhangsan"}
fmt.Println(x)
fmt.Println("----------------")
mm(x)
fmt.Println(x)
fmt.Println("----------------")
m2(&x)
fmt.Println(x)
fmt.Println("----------------")
var y = 100
//取地址
fmt.Println(&y)
fmt.Println("----------------")
var i int
var pr *int
pr = &i
fmt.Println(pr)
fmt.Println(&pr)
fmt.Println("----------------")
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)