数组指针:
解释:首先是一个指针,一个数组的地址
*[num]T // 数组指针
package main
import "fmt"
func main() {
arr1 := [4]{1,2,3,4} // 创建一个数组
// 创建一个数组指针
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指针自己的地址
// 通过指针操作数组
(*p1)[0] = 100
fmt.Println(arr1) // [100,2,3,4]
p1[0] = 200 // 简化写法
fmt.Println(arr1) // [200,2,3,4]
}
指针数组:
解释:首先是一个数组,存储的数据类型是指针
[num]*T // 指针数组
package main
import "fmt"
func main() {
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) // [1,2,3,4]
fmt.Println(arr3) // [0x..33ff3, 0x..33ff4, 0x..33ff5, 0x..33ff6]
arr2[0] = 100
fmt.Println(arr2) // [100,2,3,4]
fmt.Println(a) // 1
*arr3[0] = 200
fmt.Println(arr3) // [0x..33ff3, 0x..33ff4, 0x..33ff5, 0x..33ff6]
fmt.Println(a) // 200
b = 1000
fmt.Println(arr2) // [100,2,3,4]
fmt.Println(arr3) // [0x..33ff3, 0x..33ff4, 0x..33ff5, 0x..33ff6]
for i:=0;i<len(arr3) ;i++ {
fmt.Println(*arr3[i]) // 200\n1000\n3\n4
}
}