var 指针变量名 *变量类型 = &数据变量名
var a int = 10
//fmt.Printf("%p\n", &a)
// 定义指针变量存储变量的地址
var p *int = &a
//fmt.Printf("%p\n", p)
//通过指针间接修改变量的值
//写操作
*p = 123
指针的使用
//定义指针 指向数组 数组指针
//自动推导类型创建数组指针
//指针和数组建立关系
arr := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
var p *[10]int
p = &arr
//通过指针间接操作数组
for i := 0; i < len(p); i++ {
fmt.Println(p[i])
}
数组指针
//定义指针 指向数组 数组指针
//自动推导类型创建数组指针
//p := &arr
arr := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
//指针和数组建立关系
var p *[10]int
p = &arr
指针数组
//指针数组 数组元素是指针类型
a := 10
b := 20
c := 30
var arr [3]*int = [3]*int{&a, &b, &c}
for i := 0; i < len(arr); i++ {
fmt.Println(*arr[i])
}
结构体指针
var per Person = Person{101, "张三疯", "男", 180, "武当山"}
//fmt.Printf("%p\n", &per)
//定义指针接收结构体变量地址
//p := &per
var p *Person = &per
//通过指针间接修改结构体成员的值
(*p).name = "张君宝"
//指针可以直接操作结构体成员
p.age = 140