登录
首页 >  Golang >  Go教程

Golang指针数组与数组指针区别详解

时间:2025-12-10 10:00:37 328浏览 收藏

推广推荐
免费电影APP ➜
支持 PC / 移动端,安全直达

今天golang学习网给大家带来了《Golang指针数组与数组指针区别解析》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

指针数组是数组,元素为指针,如[3]int;数组指针是指针,指向整个数组,如[3]int,区别在于类型声明中“谁在后面”决定本质。

Golang指针数组和数组指针有什么区别

指针数组和数组指针在 Go 语言中虽然只差一个字,但含义完全不同,理解它们的关键在于“谁是指针,谁是数组”。

指针数组(Array of Pointers)

指针数组是一个数组,它的每个元素都是指针类型。换句话说,数组里存的是多个指针,每个指可以直接指向某个变量的地址。

例如:

var arr [3]*int — 这是一个长度为 3 的数组,每个元素是指向 int 类型的指针。

可以这样使用:

var a, b, c int = 1, 2, 3
arr := [3]*int{&a, &b, &c}
fmt.Println(*arr[0]) // 输出 1

这里 arr 是数组,arr[0] 是指针,*arr[0] 才是值。

数组指针(Pointer to an Array)

数组指针是一个指针,它指向一个整个数组。也就是说,这个指针保存的是一个数组的地址。

例如:

var ptr *[3]int — 这是一个指针,指向一个长度为 3 的 int 数组。

可以这样使用:

arr := [3]int{10, 20, 30}
ptr := &arr
fmt.Println((*ptr)[1]) // 输出 20

这里 ptr 是指向数组的指针,需要通过 *ptr 解引用得到原数组,再用索引访问元素。

关键区别总结

  • 指针数组:本质是数组,元素是指针,声明形式如 [N]*T
  • 数组指针:本质是指针,指向一个数组,声明形式如 *[N]T
  • 内存布局不同:指针数组存储的是多个地址;数组指针只存储一个地址,指向一整块数组内存
  • 用途不同:指针数组适合管理一组可变目标;数组指针常用于函数传参避免拷贝大数组

基本上就这些。记住:哪个词在后面,就是“什么类型的” — “指针数组”是数组,“数组指针”是指针。不复杂但容易混淆,多看类型声明就能分清。

理论要掌握,实操不能落!以上关于《Golang指针数组与数组指针区别详解》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>