两个小案例测试指针-Go

go指针一个小案例

package main

import "fmt"

func swap2(a, b *int) {
	fmt.Println("swap2 交换前地址", a, b)
	fmt.Println("swap2 交换前数值", *a, *b)

	// 取a指针的值,赋给临时变量t
	t := *a
	// 取b指针的值,赋给a指针指向的变量
	*a = *b
	// 将a指针的值赋给b指针指向的变量
	*b = t

	fmt.Println("swap2 交换后地址", a, b)
	fmt.Println("swap2 交换后数值", *a, *b)
}

func swap(a, b *int) {
	fmt.Println("swap  交换前地址", a, b)
	fmt.Println("swap  交换前数值", *a, *b)
	a, b = b, a
	fmt.Println("swap  交换后地址", a, b)
	fmt.Println("swap  交换后数值", *a, *b)
}

func main() {
	x, y := 1, 2
	swap2(&x, &y)
	fmt.Println(x, y)
	// 2 1

	a, b := 3, 4
	swap(&a, &b)
	fmt.Println(&a, &b)
	fmt.Println(a, b)
	// 3 4
}

输出结果:

swap2 交换前地址 0xc000014090 0xc000014098
swap2 交换前数值 1 2
swap2 交换后地址 0xc000014090 0xc000014098
swap2 交换后数值 2 1
2 1
swap 交换前地址 0xc0000140b0 0xc0000140b8
swap 交换前数值 3 4
swap 交换后地址 0xc0000140b8 0xc0000140b0
swap 交换后数值 4 3
0xc0000140b0 0xc0000140b8
3 4

swap2 指针所指向地址的值发生了变化,swap函数则没有。

posted @ 2020-12-17 14:03  老L头  阅读(90)  评论(0)    收藏  举报