当前位置: 代码迷 >> 综合 >> 指针类型
  详细解决方案

指针类型

热度:19   发布时间:2023-10-16 12:41:48.0
  • 指针类型
  • make和new的区别

指针类型

  1. 普通类型,变量存的就是值,也叫值类型
  2. 获取变量的地址,用&,比如:var a int,获取a的地址:&a
  3. 指针类型,变量存的是一个地址,这个地址存的才是一个值
  4. 获取指针类型所指向的值,使用:*,比如:var p int,使用p获取p指向的值
	// &: 取地址n := 18p := &nfmt.Printf("%v,%T\n", p, p)   //0xc000098000,*intfmt.Printf("%v,%T\n", &n, &n) //0xc000098000,*int// *: 根据地址取值fmt.Printf("%v,%p\n", *p, &p) //18,0xc000088018a := 10b := &afmt.Printf("a:%d ptr:%p\n", a, &a) // a:10 ptr:0xc00001a078fmt.Printf("b:%p type:%T\n", b, b) // b:0xc00001a078 type:*intfmt.Println(&b)                    // 0xc00000e018

make和new的区别

  1. make和new都是用来申请内存的
  2. new很少用,一般用来给基本数据类型申请内存,stringint,返回的是对应类型的指针(*string、*int)。
  3. make是用来给slicemapchan申请内存的,make函数返回的的是对应的这三个类型本身
	var a1 *int     //定义一个空指针fmt.Println(a1) //<nil>var a2 = new(int) //new函数申请一个内存地址fmt.Println(a2)   //0xc000096008fmt.Println(*a2) *a2 = 100 //对地址赋值fmt.Println(*a2)
  相关解决方案