1.什么是指针?
众所周知变量是一种使用方便的占位符,用于引用计算机内存地址。普通变量存的就是值,也叫值类型。
指针是一个变量,其值是另一个变量的地址,即存储器位置的直接地址。一个指针变量可以指向任何一个值的内存地址。
2.指针定义
var var_name *var-type :var_name 变量名字 * 号用于指定变量是作为一个特定类型的指针
定义声明:
var ip * int /指向整型
var float *float /指向浮点型
3.取地址符
取地址符&
package main import( "fmt" ) func main(){ var i int //定义整型变量i var p *int //定义整型指针变量p p = &i //把变量i的内存地址赋值给P fmt.Printf("变量i的内存地址:%p ",&i) fmt.Printf("指针变量p的值:%p ",p) fmt.Printf("指针变量p的内存地址:%p ",&p) } //运行结果: 变量i的内存地址:0xc04200e090 指针变量p的值:0xc04200e090 指针变量p的内存地址:0xc042004028
上面输入结果可以看出指针变量p的值是变量i的内存地址
4.获取指针变量指向的变量
获取指针变量指向的变量:*
package main import( "fmt" ) func main(){ var i int var p *int p = &i i = 100 fmt.Printf("%d ",i) fmt.Printf("%d ",*p) *p = 200 fmt.Printf("%d ",i) fmt.Printf("%d ",*p) } //运行结果: 100 100 200 200
5.指针是引用型的
package main import( "fmt" ) func change(p *int){ *p = 200 } func main(){ var i int var p *int p = &i i = 100 fmt.Printf("change之前i的值:%d ",i) change(p) fmt.Printf("change之后i的值:%d ",i) } //运行结果 change之前i的值:100 change之后i的值:200