Go 语言指针数组


在我们了解指针数组前,先看个实例,定义了长度为 3 的整型数组:

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. const MAX int = 3
  6.  
  7. func main() {
  8.  
  9. a := []int{10,100,200}
  10. var i int
  11.  
  12. for i = 0; i < MAX; i++ {
  13. fmt.Printf("a[%d] = %d\n", i, a[i] )
  14. }
  15. }

以上代码执行输出结果为:

  1. a[0] = 10
  2. a[1] = 100
  3. a[2] = 200

有一种情况,我们可能需要保存数组,这样我们就需要使用到指针。

以下声明了整型指针数组:

  1. var ptr [MAX]*int;

ptr 为整型指针数组。因此每个元素都指向了一个值。以下实例的三个整数将存储在指针数组中:

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. const MAX int = 3
  6.  
  7. func main() {
  8. a := []int{10,100,200}
  9. var i int
  10. var ptr [MAX]*int;
  11.  
  12. for i = 0; i < MAX; i++ {
  13. ptr[i] = &a[i] /* 整数地址赋值给指针数组 */
  14. }
  15.  
  16. for i = 0; i < MAX; i++ {
  17. fmt.Printf("a[%d] = %d\n", i,*ptr[i] )
  18. }
  19. }

以上代码执行输出结果为:

  1. a[0] = 10
  2. a[1] = 100
  3. a[2] = 200