指向指標的指標是多重間接的形式或指標鏈。通常,指標包含變數的地址。當定義指向指標的指標時,第一個指標包含第二個指標的地址,它指向包含實際值的位置,如下所示。
作為指向指標的指標的變數必須如此宣告。這是通過在其名稱前面新增一個星號(*
)來實現的。 例如,以下是一個指向int
型別的指標的宣告:
var ptr **int;
當目標值由指向指標的指標間接指向時,存取該值需要應用兩個星號(**
)運算子,如下面的範例所示:
package main
import "fmt"
func main() {
var a int
var ptr *int
var pptr **int
a = 3000
/* take the address of var */
ptr = &a
/* take the address of ptr using address of operator & */
pptr = &ptr
/* take the value using pptr */
fmt.Printf("Value of a = %d\n", a )
fmt.Printf("Value available at *ptr = %d\n", *ptr )
fmt.Printf("Value available at **pptr = %d\n", **pptr)
}
當上述程式碼編譯和執行時,它產生以下結果:
Value of var = 3000
Value available at *ptr = 3000
Value available at **pptr = 3000