Files
bulma/composite_pointer.go
T

44 lines
880 B
Go

package main
import "fmt"
// 函数传指针,修改外部变量
func increment(x *int) {
*x++
}
// 指针作为返回值
func createInt() *int {
var num int = 100
return &num
}
func main() {
var x int = 20
var p *int = &x // p是指向x的指针
fmt.Printf("x的值: %d, x的地址: %p\n", x, &x)
fmt.Printf("p的值(地址): %p, p指向的值: %d\n", p, *p)
// 通过指针修改值
*p = 21
fmt.Printf("修改后x的值: %d\n", x) // 输出21
// 函数传指针
increment(&x)
fmt.Printf("increment后x值: %d\n", x) // 输出22
// 指针作为返回值
p2 := createInt()
fmt.Printf("createInt返回值: %d, 地址: %p\n", *p2, p2) // 输出100及地址
// 指针与nil比较
var p3 *int
if p3 == nil {
fmt.Println("p3是nil指针")
}
// 错误示例(编译不通过)
// p++ // 报错:invalid operation: p++ (non-numeric type *int)
}