go 语言学习笔记③----指针
变量指针new函数传递
值传递引用传递
go 语言学习笔记③----指针默认为uil(c语言中的NULL)
变量1.内存(内容)
2.地址
指针a 内容
&a a的地址
类c语言
声明var p *int 一个int类型的指针
*指针,指针所指向的内存地址的内容
eg:
package main
import "fmt"
func main() {
var p *int
a := 10
p = &a
*p = 6
fmt.Println(*p)
}
注:不操作空指针
new开辟新地址 (c语言中的malloc)
不同于c语言,需要free()去释放空间, go语言不用手动释放空间, 可以自动释放空间
package main
import "fmt"
func main() {
var p *int
p = new(int)
*p = 666
fmt.Println(*p)
}
函数传递
值传递
swap(a , b )
引用传递swap(&a , &b)
package main
import "fmt"
func swap(a, b int) {
a, b = b, a
}
func sw(a, b *int) {
*a, *b = *b, *a
}
func main() {
a, b := 1, 2
swap(a, b)
fmt.Println(a, b)
sw(&a, &b)
fmt.Println(a, b)
}
结果
1 2
2 1



