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交换,感觉直接交换来的更直接


版权声明:本文为ens160原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。