指標的指標
如果一個指標變數存放的又是另一個指標變數的地址,則稱這個指標變數為指向指標的指標變數。
var ptr **int;COPY
package main
import "fmt"
func main() {
var a int var ptr *int var pptr **int
a = 3000
/* 指標 ptr 地址 */ ptr = &a
/* 指向指標 ptr 地址 */ pptr = &ptr
/* 獲取 pptr 的值 */ fmt.Printf("變數 a = %d\n", a ) fmt.Printf("指標變數 *ptr = %d\n", *ptr ) fmt.Printf("指向指標的指標變數 **pptr = %d\n", **pptr) }COPY
結果
變數 a = 3000 指標變數 *ptr = 3000 指向指標的指標變數 **pptr = 3000COPY
指標作為函式引數
package main
import "fmt"
func main() { /* 定義區域性變數 */ var a int = 100 var b int= 200
fmt.Printf("交換前 a 的值 : %d\n", a ) fmt.Printf("交換前 b 的值 : %d\n", b )
/* 呼叫函式用於交換值 * &a 指向 a 變數的地址 * &b 指向 b 變數的地址 */ swap(&a, &b);
fmt.Printf("交換後 a 的值 : %d\n", a ) fmt.Printf("交換後 b 的值 : %d\n", b ) }
func swap(x *int, y *int) { var temp int temp = *x /* 儲存 x 地址的值 */ *x = *y /* 將 y 賦值給 x */ *y = temp /* 將 temp 賦值給 y */ }COPY
結果
交換前 a 的值 : 100 交換前 b 的值 : 200 交換後 a 的值 : 200 交換後 b 的值 : 100