golang 11-指针及其内存图

package main

import "fmt"
//goalg里的指针类型
func main()  {
	var i int = 1 //1)	基本数据类型,变量存的就是值,也叫值类型
	fmt.Println( "变量的地址是:",&i) //2)	获取变量的地址,用&

	fmt.Println("--------------------")
	//下列var ptr *int = &i的剖析
	//1.ptr是一个指针变量
	//2.ptr 的类型 *int
	//ptr本身的值是&i
	var ptr *int = &i
	fmt.Printf("输出变量地址:%v\n",ptr)
	fmt.Printf("输出指针变量的地址:%v\n",&ptr)
	fmt.Printf("输出指针变量指向的值:%v\n",*ptr)

	fmt.Println("--------------------")

	//案例题:
	var a int = 300
	//var ptrs *int = a 指针类型ptrs只能接收a的地址赋值,不能直接赋值
		//修改为:
		var ptrs *int = &a
	fmt.Printf("输出指针类型的地址:%v 输出指针类型变量指向的值:%v\n",ptrs,*ptrs)

	fmt.Println("--------------------")

	var b int = 300
	var b1 float32 = float32(b)//指针类型也需要先转换类型为同类型,才能接收地址
	var ptrsd *float32 = &b1
	fmt.Printf("输出指针类型的地址:%v 输出指针类型变量指向的值:%v 查看当前指针变量类型:%T\n ",ptrsd,*ptrsd,ptrsd)

	fmt.Println("--------------------")

	var aa int = 300
	var bb int = 400
						//var aa,bb int = 300,400 一行声明也可以
	var ptrr *int = &a //把变量地址赋值给同类型指针变量
		*ptrr = 100	//使用指针变量修改变量内的数值

		ptrr = &b //200 //因为已经有定义所以无需重新定义
		*ptrr = 200 // 使用指针变量修改变量内的数值
		fmt.Printf("a的数值是:%d b的数值是:%d 定义的指针类型变量数值是:%d\n",aa,bb,*ptrr)

	var qwe int = 600
	var qwer *int = &qwe //获取变量的地址,用& 把变量地址赋值到指针变量里
	*qwer = 200 //修改指针变量数值
	fmt.Printf("%d",*qwer) //使用指针变量
}

运行结果

变量的地址是: 0xc00000a088
--------------------
输出变量地址:0xc00000a088
输出指针变量的地址:0xc000006030
输出指针变量指向的值:1
--------------------
输出指针类型的地址:0xc00000a0b0 输出指针类型变量指向的值:300
--------------------
输出指针类型的地址:0xc00000a0c0 输出指针类型变量指向的值:300 查看当前指针变量类型:*float32
 --------------------
a的数值是:300 b的数值是:400 定义的指针类型变量数值是:200
200

你可能感兴趣的:(golang学习,golang,开发语言,后端)