035指针

作者: 哆啦A梦_ca52 | 来源:发表于2021-03-13 15:20 被阅读0次
    package main
    
    import "fmt"
    
    //地址就是指针
    //&value 对值取地址
    //*ptr对地址取值
    func main011() {
    //声明变量a时,系统开辟了一块内存【地址】,里面存的【值】是123
        var a int = 123
        fmt.Printf("a的类型是%T\n",a)//int
        fmt.Printf("a的值是%v\n",a)//123
        fmt.Printf("a的地址是%p\n", &a)//Ox...
       //&a取变量a的地址
       aPointer :=&a
       fmt.Printf("aPointer的类型是%T\n",aPointer)//int
    //将aPointer指向地址中的值修改为456
    *aPointer = 456
    //a的值就变成了456
    fmt.Println("a=",a)
    }
    
    func main04()  {
        //系统给x分配了内存
        var x = 456
        fmt.Println(x)//456
        //定义整型指针 (存储整型数据的地址)
        //默认赋值为空<nil>
        var xPtr *int
        fmt.Println("xPtr=",xPtr)//nil
        //aPtr指向x的值
        xPtr = &x
        //将xPtr指向的地址中的值修改为789
        *xPtr = 789
        fmt.Println(x) //789
        fmt.Println(xPtr) //0xc0420080
        fmt.Println(&x) //0xc0420080
        fmt.Println(*xPtr == x) //true
        fmt.Println(xPtr == &x) //true
    
        var y = 456
        *xPtr = y
        fmt.Println(x)  //456
        fmt.Println(xPtr) //没有变
        fmt.Println(&x)   //没有变
        fmt.Println(*xPtr)  //456
        fmt.Println(*xPtr == y) //true
        fmt.Println(x == y)    //true
        fmt.Println(&x == &y) //false
        fmt.Println(xPtr == &y)  //false
    
    //xprt指向y的地址
      xPtr = &y
      y = 789
      fmt.Println(x)  //456
      fmt.Println(y) //789
      fmt.Println(*xPtr) //789
      fmt.Println(&x == xPtr) //false
    }
    
    
    //指针是严格检查数据类型的
    func main045()  {
        var x =123
        var intPtr *int
        intPtr = &x
        fmt.Println(intPtr,*intPtr) //0x...,123
        //var y = "你妹"
      //  intPtr = &y //编译错误,【整型指针】无法赋值为【字符串的地址】
    }
    
    
    
    

    相关文章

      网友评论

          本文标题:035指针

          本文链接:https://www.haomeiwen.com/subject/oxuxcltx.html