go指针——精选推荐
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
go指针package main
import "fmt"
func main() {
var a int = 10
var p *int = &a
fmt.Println( "000>>a = ",a)
fmt.Printf( "000>>p=%v p=%v,&p=%p\n ",p,*p,p)
a = 100
fmt.Println( "001>>a = ",a)
*p = 250
fmt.Println( "002>>a= ",a)
fmt.Println("003>>*p = ", a)
}
说明:
指针:
指针就是地址。
指针变量就是存储地址的变量。
*p:解引⽤、间接引⽤。
栈帧:
⽤来给函数运⾏提供内存空间。
取内存于stack 上。
当函数调⽤时,产⽣栈帧。
函数调⽤结束,释放栈顿。
栈帧存储: 1.局部变量。
2.形参。
(形参与局部变量存储地位等同) 3.内存字段描述值
指针使⽤注意:
空指针:未被初始化的指针。
var p *int *p--> err
野指针:被—⽚⽆效的地址空间初始化。
格式化输出:;
%q: 以Go语⾔格式显⽰字符串。
默认带有""符
%v:显⽰对应数据详细信息
变量存储:
等号左边的变量,代表变量所指向的内存空间。
(写)
等号右边的变星,代表变量内存空间存储的数据值。
(读)
指针的函数传参。
代码:
package main
import "fmt"
func main() {
var a int = 10
fmt.Println("&a", &a)
var p *bool
//在 heap 上申请⼀⽚内存地址空间
p = new(bool) //默认类型的默认值
fmt.Println(*p)
var p1 *int //在 heap 上申请⼀⽚内存地址空间
p1 = new(int) //默认类型的默认值
fmt.Println(*p1)
var p2 *string //在 heap 上申请⼀⽚内存地址空间
p2 = new(string) //默认类型的默认值
fmt.Printf("%s\n",*p2)
fmt.Printf("%q\n",*p2)
}
输出:
&a 0xc0000120b0
false
""。