5-Golang基礎(chǔ)類型---point(指針)

一個指針變量指向了一個值的內(nèi)存地址。

var var_name *var-type
var ip *int        /* 指向整型*/
var fp *float32    /* 指向浮點型 */

指針有3個概念: 指針地址、指針類型和指針取值。
記住2個符號: &取變量的內(nèi)存地址和*取變量的內(nèi)存地址的值

x := 1
p := &x         // p的類型為 *int, 指針指向 x
fmt.Println(*p) // "1"
*p = 2          // 更改p的值 x = 2
fmt.Println(x)  // "2"

任何類型的指針的零值都是nil。如果p指向某個有效變量,那么p != nil測試為真。指針之間也是可以進行相等測試的,只有當(dāng)它們指向同一個變量或全部是nil時才相等。

var x, y int
fmt.Println(&x == &x, &x == &y, &x == nil) // "true false false"

練習(xí)

package main

import "fmt"

func main() {
    a := 2
    b := a
    fmt.Println(a, b) // 2 2
    b = 3
    fmt.Println(a, b) // 2 3
    a = 4
    fmt.Println(a, b) // 4 3

    // 指針
    // &取內(nèi)存地址
    // *取內(nèi)存地址的值
    var c *int = &a
    ptr := &a
    fmt.Printf("%T %T %p %v\n", ptr, c, ptr, c)
    fmt.Println(a) // 4

    fmt.Println(*c) // 4
    *c = 99
    fmt.Println(a) // 99

    var ptr1 *int
    fmt.Printf("ptr1 指針的值為: %x\n", ptr1)
    fmt.Printf("ptr1: %#v\n", ptr1)
    if ptr1 != nil {
        fmt.Println("ptr1 != nil")
    } else {
        fmt.Println("ptr1 == nil")
    }

    var pa int = 2 //聲明變量
    var pb *int    //聲明指針變量
    pb = &pa       //指針變量的存儲地址

    fmt.Printf("a 變量的內(nèi)存地址: %x\n", pb)
    fmt.Printf("b 變量的內(nèi)存地址: %x\n", pb)
    fmt.Printf("b 變量的內(nèi)存地址的值: %d\n", *pb)
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容