package main import "fmt" func main() { /* 数值指针:首先是一个指针,一个数组的地址。 *[4]Type 指针数组:首先是一个输出,存储的数据类型是指针 [4]*Type */ // 1.创建一个普通的数组 arr1 := [4]int{1,2,3,4} fmt.Println(arr1) // 2.创建一个指针,存储该数组的地址--》数组指针 var p1 *[4]int p1 = &arr1 fmt.Println(p1) //&[1 2 3 4] fmt.Printf("%p\n",p1) //数组arr1的地址 fmt.Printf("%p\n",&p1)//p1指针自己的地址 // 3.根据数组指针,操作数据 (*p1)[0] = 100 fmt.Println(arr1) p1[0] = 200 //简化写法 fmt.Println(arr1) // 指针数组 a := 1 b := 2 c := 3 d := 4 arr2 := [4] int {a,b,c,d} arr3 := [4] *int {&a,&b,&c,&d} fmt.Println("arr2是:",arr2) //[1 2 3 4] fmt.Println("arr3是:",arr3) //[0xc00000a138 0xc00000a140 0xc00000a148 0xc00000a150] arr2[0] = 100 fmt.Println("arr2是:",arr2) //arr2是: [100 2 3 4] fmt.Println("a的值是:",a) //a的值是: 1 *arr3[0] = 100 fmt.Println("arr3是:",arr3) //arr3是: [0xc00000a138 0xc00000a140 0xc00000a148 0xc00000a150] fmt.Println("a的值是:",a) //a的值是: 100 b = 1000 fmt.Println("arr2是:",arr2) //[100 2 3 4] fmt.Println("arr3的值是:",arr3) //[0xc00011e0c0 0xc00011e0c8 0xc00011e0d0 0xc00011e0d8] for i:=0;i<len(arr3);i++{ //100,1000,3,4 fmt.Println(*arr3[i]) } } //结果 [1 2 3 4] &[1 2 3 4] 0xc00011c140 0xc000148020 [100 2 3 4] [200 2 3 4] arr2是: [1 2 3 4] arr3是: [0xc00011e0c0 0xc00011e0c8 0xc00011e0d0 0xc00011e0d8] arr2是: [100 2 3 4] a的值是: 1 arr3是: [0xc00011e0c0 0xc00011e0c8 0xc00011e0d0 0xc00011e0d8] a的值是: 100 arr2是: [100 2 3 4] arr3的值是: [0xc00011e0c0 0xc00011e0c8 0xc00011e0d0 0xc00011e0d8] 100 1000 3 4