package mainimport "fmt"func main() {//在计算机底层 a 这个变量其实对应了一个内存地址// var a int = 10// fmt.Printf("a的值:%v a的类型%T a的地址%p", a, a, &a) //a的值:10 a的类型int a的地址0xc0000100a8// 指针也是一个变量,但它是一种特殊的变量,它存储的数据不是一个普通的值,而是另 一个变量的内存地址// var a = 10// var p = &a //p指针变量 p的类型 *int(指针类型)// fmt.Printf("a的值:%v a的类型%T a的地址%p\n", a, a, &a)// fmt.Printf("p的值:%v p的类型%T", p, p)//每一个变量都有自己的内存地址var a = 10var p = &a //p指针变量 p的类型 *int(指针类型)fmt.Printf("a的值:%v a的类型%T a的地址%p\n", a, a, &a)fmt.Printf("p的值:%v p的类型%T p的地址%p", p, p, &p)}
package mainimport "fmt"func main() {a := 10p := &a //p指针变量 类型 *int// *p :表示取出p这个变量对应的内存地址的值fmt.Println(p) //a的地址 0xc0000100a8fmt.Println(*p) //*p 表示打印a对应的值 10*p = 30 //改变p这个变量对应的内存地址的值fmt.Println(a) //30}
package mainimport "fmt"func fn1(x int) {x = 10}func fn2(x *int) {*x = 40}func main() {var a = 5fn1(a)fmt.Println(a) //5fn2(&a)fmt.Println(a) //40}
package mainimport "fmt"func main() {// var userinfo map[string]string// userinfo["username"] = "张三"// fmt.Println(userinfo)// var userinfo = make(map[string]string)// userinfo["username"] = "张三"// fmt.Println(userinfo)// var a []int// a[0] = 1// fmt.Println(a)// var a = make([]int, 4, 4)// a[0] = 1// fmt.Println(a)var a *int //指针也是引用数据类型*a = 100fmt.Println(*a)}
package mainimport "fmt"func main() {// 实际想开发中 new 函数不太常用,使用 new 函数得到的是一个指类型针,并且该指针对应的值为该类型的零值// var a = new(int) //a是一个指针变量 类型是 *int的指针类型 指针变量对应的值是0// fmt.Printf("值:%v 类型:%T 指针变量对应的值:%v", a, a, *a) //值:0xc0000a0090 类型:*int 指针变量对应的值:0/*错误的写法var a *int //指针也是引用数据类型*a = 100fmt.Println(*a)*///new方法给指针变量分配存储空间// var b *int// b = new(int)// *b = 100// fmt.Println(*b) // fmt.Println(*a)var f = new(bool)fmt.Println(*f) //false}
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论