package main

import "fmt"

// gantiTarget mengubah variabel pointer milik pemanggil.
// pp bertipe **int: pointer ke pointer ke int.
func gantiTarget(pp **int, baru *int) {
	*pp = baru
}

func main() {
	x, y := 10, 20
	p := &x

	fmt.Printf("tipe p  : %T\n", p)
	fmt.Printf("tipe &p : %T\n", &p)

	fmt.Println("*p sebelum gantiTarget:", *p)

	gantiTarget(&p, &y)
	fmt.Println("*p sesudah gantiTarget:", *p)
	fmt.Println("p sekarang == &x      :", p == &x)
	fmt.Println("p sekarang == &y      :", p == &y)
}
