什么是指针
一个指针变量指向了一个值的内存地址。区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。相对其他语言来说简单很多。简单看下使用方法。
指针的声明
var ip *int
var fp *float32
指针取值
func main() {
var a int= 20 /* 声明实际变量 */
var ip *int /* 声明指针变量 */
ip = &a /* 指针变量的存储地址 */
fmt.Printf("a 变量的地址是: %x\n", &a )
/* 指针变量的存储地址 */
fmt.Printf("ip 变量储存的指针地址: %x\n", ip )
/* 使用指针访问值 */
fmt.Printf("*ip 变量的值: %d\n", *ip )
}
取地址操作符&和取值操作符*是一对互补操作符,&取出地址,*根据地址取出地址指向的值。
变量、指针地址、指针变量、取地址、取值的相互关系和特性如下:
对变量进行取地址(&)操作,可以获得这个变量的指针变量。
指针变量的值是指针地址。
对指针变量进行取值(*)操作,可以获得指针变量指向的原变量的值。
指针传值
func modify1(x int) {
x = 100
}
func modify2(x *int) {
*x = 100
}
func main() {
a := 10
modify1(a)
fmt.Println(a) // 10
modify2(&a)
fmt.Println(a) // 100
}
本文介绍了Golang中的指针基础知识,包括指针的声明、取值以及指针在函数传值中的应用。Golang的指针是安全的,不支持偏移和运算,简化了指针的操作。
1255

被折叠的 条评论
为什么被折叠?



