golang-指針


 

package main

import "fmt"

func main() {
    var a int =10

    var p *int =&a //定義指針變量p,傳遞a的地址
    //指針:指針就是地址,指針變量就是存儲地址的變量。
    a=100
    fmt.Println("a=",a)
    *p =200 //借助a變量的地址,操作a對應空間
    fmt.Println("a=",a)
    fmt.Println("*p=",*p)

    fmt.Println("&a=",&a)//&獲取地址 0xc42001a0c0
    fmt.Println("a=",a) //200
    fmt.Println("p=",p) //0xc42001a0c0
    fmt.Println("*p=",*p) //200 加×就是獲取值,解引用、間接引用

}

 

package main

import (
    "fmt"
)

func test(m int)  {
    var b int = 1000
    b += m
}

/*func main()  {
    var a int = 10
    var p *int = &a

    a = 100
    fmt.Println("a = ", a)

    test(10)

    *p = 250  // 借助a 變量的地址,操作a對應空間
    fmt.Println("a = ", a)
    fmt.Println("*p = ", *p)

    a = 1000
    fmt.Println("*p = ", *p)
}*/

/*func test()  {
    p := new(int)            // 默認類型的 默認值
    *p = 1000
}

func main()  {
    var a int = 10
    fmt.Println("&a", &a)

    var p *int

    // 在 heap 上申請一片內存地址空間

    fmt.Printf("%d\n", *p)
    fmt.Printf("%v\n", *p)        // 打印Go語言格式的字符串。

}*/

func swap(a, b int)  {
    a, b = b, a
    fmt.Println("swap  a:", a, "b:", b)
}

func swap2(x, y *int)  {
    *x, *y = *y, *x
}

func main()  {
    a, b := 10, 20

    swap2(&a, &b)            // 傳地址值。
    fmt.Println("swap2: main  a:", a, "b:", b)

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM