<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 一、指針 什么是指針:一個指針變量指向了一個值的內存地址。 Go 語言的取地址符是 &,放到一個變量前使用就會返回相應變量的內存地址。 類似于變量和常量,在使用指針前你需要聲明指針。指針聲明格式如下: &:對值取地址 *:對地址取值 ~~~ var var_name *var-type ~~~ ~~~ var ip *int /* 指向整型*/ var fp *float32 /* 指向浮點型 */ ~~~ ![](https://img.kancloud.cn/2e/fc/2efca102fc0f45f222a9b4532a9a03f5_663x449.png) ~~~ package main import "fmt" func main() { var a int = 10 fmt.Printf("變量的地址: %x\n", &a) } ~~~ 執行結果: 變量的地址: c0000140a8 ## 二、如何使用指針 在指針類型前面加上 \* 號(前綴)來獲取指針所指向的內容。 ~~~ package main import "fmt" func main() { var a int = 20 /* 聲明實際變量 */ var ip *int /* 聲明指針變量 */ ip = &a /* 指針變量的存儲地址 */ fmt.Printf("a 變量的地址是: %x\n", &a) /* 指針變量的存儲地址 */ fmt.Printf("ip 變量儲存的指針地址: %x\n", ip) /* 使用指針訪問值 */ fmt.Printf("*ip 變量的值: %d\n", *ip) } ~~~ 執行結果: a 變量的地址是: c0000140a8 ip 變量儲存的指針地址: c0000140a8 *ip 變量的值: 20 ## 三、指向指針的指針 指向指針的指針變量聲明格式如下: ~~~ var ptr **int; ~~~ ~~~ 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) } ~~~ 執行結果: 變量 a = 3000 指針變量 *ptr = 3000 指向指針的指針變量 **pptr = 3000 ## 四、指針作為函數參數 ~~~ 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 */ } ~~~ 執行結果: 交換前 a 的值 : 100 交換前 b 的值 : 200 交換后 a 的值 : 200 交換后 b 的值 : 100
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看