zoukankan      html  css  js  c++  java
  • Go中&和*的区别

    重点:一个指针的值是另一个变量的地址。一个指针对应变量在内存中的存储位置。并不是每一个值都会有一个内存地址,但是对于每一个变量必然有对应的内存地址。

    & 返回变量的内存地址,也叫取址符。

    * 返回变量的值, * 只能作用在指针上

    package main
    
    import "fmt"
    
    func main()  {
        var a = 5
        var p = &a // p 持有变量 a 的内存地址。也就是说 p 的值就是 a 的内存地址,p 的内存地址还需要再一次取址
        fmt.Printf("a 的值: %v
    ", *p)
        fmt.Printf("a 的内存地址: %p
    ", p)
        fmt.Printf("p 的值: %v
    ", p)     // p 的值与 a 的内存地址一样
        fmt.Printf("p 的内存地址: %p
    ", &p) // p 的内存地址
    
        // 用初始的变量或指针改变值
        *p = 3 // 用指针
        a = 3  // 用初始变量
        fmt.Printf("a 的内存地址: %p
    ", p)
        fmt.Printf("a 的值: %v
    ", *p)
    }
    
  • 相关阅读:
    cf B. Sonya and Exhibition
    cf B. Sonya and Exhibition
    1000C
    1000C
    AOE网打印所有的关键路径
    AOE网打印所有的关键路径
    拓扑排序判断有向图是否成环
    拓扑排序判断有向图是否成环
    迭代器
    Dictionary Aizu
  • 原文地址:https://www.cnblogs.com/wuyongqiang/p/11912793.html
Copyright © 2011-2022 走看看