数组指针
数组指针是一个指向数组的指针
举个栗子
package main
import "fmt"
const max = 5
func main() {
n := [max]int{5, 6, 7, 8, 9}
//数组指针
var ptrsa *[max]int = &n
for i, x := range ptrsa {
fmt.Printf("索引:%d 值:%d 值内存地址:%d\n", i, (*ptrsa)[i], &x)
}
}
运行结果如下:
可以看到数组里的每个值的内存地址都是一样的,指向所在数组
索引:0 值:5 值内存地址:824634310752
索引:1 值:6 值内存地址:824634310752
索引:2 值:7 值内存地址:824634310752
索引:3 值:8 值内存地址:824634310752
索引:4 值:9 值内存地址:824634310752
指针数组
指针数组是指一个数组中的每个元素都是指针
栗子:
package main
import "fmt"
const max = 5
func main() {
//指针数组
n := [max]int{5, 6, 7, 8, 9}
var ptrs [max]*int
for i, _ := range n {
ptrs[i] = &n[i]
}
for i, x := range ptrs {
fmt.Printf("索引:%d 值a:%d 内存地址:%d\n", i, *x, x)
}
}
运行结果如下:
内存地址各不相同~
索引:0 值a:5 内存地址:824634277984
索引:1 值a:6 内存地址:824634277992
索引:2 值a:7 内存地址:824634278000
索引:3 值a:8 内存地址:824634278008
索引:4 值a:9 内存地址:824634278016