首页 > 编程笔记 > Go语言笔记 阅读:3

Go语言指针数组的用法(附带实例)

指针数组即元素均为指针的数组。在 Go语言中,使用 var 关键字声明指针数组。

声明指针数组的语法格式如下:
var ptr [length]*type
参数说明如下:
那么,指针数组的应用场景是什么呢?如果在 Go 语言程序开发过程中需要保存一个数组,那么就需要使用指针。

定义长度为 4 的 int 类型数组后,使用 for 循环遍历数组,并格式化输出数组中的元素。代码如下:
package main //声明 main 包

import "fmt" //导入 fmt 包,用于打印字符串

const length = 4 //定义表示数组长度为 4 的常量

func main() {
    number := []int{2, 4, 6, 8} //定义长度为 4 的 int 类型数组
    for i := 0; i < length; i++ { //遍历数组
        fmt.Printf("number[%d] = %d\n", i, number[i]) //格式化输出数组中的元素
    }
}
运行结果如下:

number[0] = 2
number[1] = 4
number[2] = 6
number[3] = 8

为了保存数组 number 需要使用元素个数与数组 number 相同的指针数组,将数组 number 中每个元素的内存地址依次赋值给指针数组中的各个元素。通过对指针数组中的各个元素执行“取值”操作,可以获取指针数组中的各个元素指向的变量的值。

【实例 1】定义元素个数与数组 number 相同的指针数组 ptr,将数组 number 中每个元素的内存地址依次赋值给指针数组中的各个元素;格式化分别输出赋值前和赋值后的指针数组及其类型;遍历指针数组,格式化输出指针数组中各个元素指向的数组 number 中相应元素的值。

代码如下:
package main //声明 main 包

import "fmt" //导入 fmt 包,用于打印字符串

const length = 4 //定义表示数组长度为 4 的常量

func main() {
    number := []int{2, 4, 6, 8} //定义长度为 4 的 int 类型数组
    var ptr [length]*int //声明长度为 length 的 int 类型指针数组
    fmt.Printf("%v, %T \n", ptr, ptr) //格式化分别输出指针数组及其类型
    for i := 0; i < length; i++ {
        ptr[i] = &number[i] //将数组 number 中每个元素的内存地址依次赋值给指针数组中的每个元素
    }
    fmt.Printf("%v, %T \n", ptr, ptr) //格式化分别输出指针数组及其类型
    for i := 0; i < length; i++ {
        //格式化输出指针数组中每个元素指向的数组 number 中相应元素的值
        fmt.Printf("number[%d] = %d\n", i, *ptr[i])
    }
}
运行结果如下:

[<nil> <nil> <nil> <nil>], [4]*int
[0xc0000a4060 0xc0000a4068 0xc0000a4070 0xc0000a4078], [4]*int
number[0] = 2
number[1] = 4
number[2] = 6
number[3] = 8

相关文章