【Golang】✔️走进 Go 语言✔️ 第十一课 指针
【摘要】
【Golang】✔️走进 Go 语言✔️ 第十一课 指针
概述指针数据和数据存储地址创建指针通过指针修改变量值空指针
指针数组二级指针
概述
Golang 是一个跨平台的新生编程语言....
概述
Golang 是一个跨平台的新生编程语言. 今天小白就带大家一起携手走进 Golang 的世界. (第 11 课)
指针
指针 (Pointer) 也就是内存地址, 指针变量是用来存放内存地址的变量. Go 语言的取地址符是&
, 放到一个变量前使用就会返回相应变量的内存地址.
数据和数据存储地址
例子:
package main
import "fmt"
func main() {
// 定义变量
var num = 10
// 调试输出值和地址
fmt.Println("值: ", num, "地址: ", &num)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
输出结果:
值: 10 地址: 0xc00000a088
- 1
创建指针
例子:
package main
import "fmt"
func main() {
// 定义变量
var num = 10
// 定义指针
var pnum = &num
// 调试输出
fmt.Println("变量值: ", num, "变量地址: ", &num)
fmt.Println("指针值: ", pnum, "指针地址: ", &pnum)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
输出结果:
变量值: 10 变量地址: 0xc00000a088
指针值: 0xc00000a088 指针地址: 0xc000006028
- 1
- 2
我们可以看到, 指向 num 的指针 pnum 的值为 num 的地址.
通过指针修改变量值
例子:
package main
import "fmt"
func main() {
// 定义变量
var num = 10
// 定义指针
var pnum = &num
fmt.Println(num, &num)
// 通过指针改变变量的值
*pnum = 100
fmt.Println(num, &num)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
输出结果:
10 0xc00000a088
100 0xc00000a088
- 1
- 2
空指针
空指针 (Null Pointer) 是在计算中有保留值, 用于指示指针不引用有效对象. 程序通常使用空指针来表示条件.
例子:
package main
import "fmt"
func main() {
// 定义空指针
var pt *int
// 调试输出
fmt.Println(pt)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
输出结果:
<nil>
- 1
指针数组
例子:
package main
import "fmt"
func main() {
// 定义int数组
var array = []int {1, 2, 3}
// 定义指针数组
var pt_array [3]* int
// 遍历
for i := 0; i < 3; i++ {
// 指针指向地址
pt_array[i] = &array[i]
}
// 输出指针和指针指向的值
for _, pt := range pt_array {
fmt.Println(*pt, pt)
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
输出结果:
1 0xc0000ae090
2 0xc0000ae098
3 0xc0000ae0a0
- 1
- 2
- 3
二级指针
二级指针是一个指向一级指针值的指针.
例子:
package main
import "fmt"
func main() {
// 定义变量
var num = 10
// 定义一级指针
var pt *int = &num
// 定义二级指针
var ppt **int = &pt
// 调试输出
fmt.Println(num, &num)
fmt.Println(pt, &pt)
fmt.Println(ppt, &ppt)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
输出结果:
10 0xc00000a088
0xc00000a088 0xc000006028
0xc000006028 0xc000006030
- 1
- 2
- 3
我们可以看到一级指针 pt 的值为 num 的内存地址, 二级指针 ppt 的值为一级指针 pt 的地址.
文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。
原文链接:iamarookie.blog.csdn.net/article/details/119601449
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)