golang中的指针数组

package main

import "fmt"

const MAX int = 3

func main() {
	a := []int{10, 100, 200}
	var ptr [MAX]*int
	for i := 0; i < MAX; i++ {
		ptr[i] = &a[i]
		fmt.Printf("a[%d]的地址:%x\n", i, ptr[i])

	}
	for i := 0; i < MAX; i++ {
		fmt.Printf("a[%d]的值是:%d\n", i, *ptr[i])
	}
}

 数组中通常多个值,所以指向数组的指针也会有多个值

ptr声明为一个指针数组,数组长度为MAX,因为ptr中的每个元素现在保存在一个指向int值的只指针,他们将存储在指针数组中

传递给函数,go语言允许传递指针到函数中,只需将函数的参数声明为指针类型。

package main

import "fmt"

func swap(x *int, y *int) {
	var temp int
	temp = *x  //复制一份x
	*x = *y   //把y给x
	*y = temp //把原来的x给y
}
func main() {
	a := 100
	b := 200
	fmt.Printf("交换之前a的值为:%d\n", a)
	fmt.Printf("交转之前b的值为:%d\n", b)
	swap(&a, &b)
	fmt.Printf("交换内存之后a的值:%d\n", a)
	fmt.Printf("交换内存之后b的值:%d\n", b)
	fmt.Println("$$$$$$$$$$$$$$$$$$$$$$$$$")
	a, b = b, a
	fmt.Println(a, b)
}

 使用ptr交换,感觉直接交换来的更直接

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值