深入理解Go系列一之指针变量

指针变量

  1. 基本概念

    • &a,代表 a 变量的内存地址
    • p,代表一个句柄引用(句柄由实例数据指针与实例类型指针两部分组成) ,句柄的好处是,当实例数据值改变时,不需要改动实例数据指针与实例类型指针的引用
    • *p,代表句柄引用中,指向实例数据的指针(引用)
    • *type,代表实例类型指针,一般声明一个指针变量后就不会改动类型
  2. 指针内存布局分析

  3. 代码示例

package main

import "fmt"

func main() {
	/*[01] 指针地址声明;
	  并将a变量内存地址作为p 句柄引用 */
	var a = 100
	var p *int = &a
	fmt.Println(a) //100
	fmt.Println(p) //0xc000126010

	/*[02] 更改指针实例数据的值
	  句柄引用不变*/
	*p = 200
	fmt.Println(a) //200
	fmt.Println(p) //0xc000126010

	/*[03] 实例数据赋值给新变量b;
	  实例数据指针赋值给新变量c;*/
	b := a
	c := *p
	fmt.Println(p)  //0xc000126010
	fmt.Println(&b) //0xc000126030
	fmt.Println(&c) //0xc000126038

}
Tags: