Go之指针

package main

import "fmt"
// &获取变量的地址,*获取指针变量指向的地址值,不支持对指针进行操作
func main() {
	a := 10
	var b *int = &a // b := &a也可以
	// 通过指针改变变量的数值
	*b = 12
	fmt.Printf("变量a地址:%x\n", &a)
	fmt.Printf("变量b地址:%x,变量b的值:%v,变量b指向地址值:%v\n", &b, b, *b)
	// 通过指针传递函数的参数
	num := 59
	num2 := &num
	fmt.Println("value of a before function call is", num)
	change(num2)
	fmt.Println("value of a after function call is", num)
	// 不要将一个指向数组的指针传递给函数。使用切片。
	arr := [3]int{9,10,11}
	modify(&arr)
	fmt.Println(arr)
	// 通常使用切片传递函数的数组参数
	modify2(arr[:])
	fmt.Println(arr)
}
func change(val *int) {
	*val = 55
}
func modify(arr *[3]int){
	(*arr)[0] = 90
}
func modify2(arr []int){
	arr[0] = 100
}

运行结果:

变量a地址:c0000ac058
变量b地址:c0000d8018,变量b的值:0xc0000ac058,变量b指向地址值:12
value of a before function call is 59
value of a after function call is 55
[90 10 11]
[100 10 11]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值