zoukankan      html  css  js  c++  java
  • Golang指针基本介绍及使用案例

    一、指针的相关概念说明

    • 变量:是基本类型,变量存的就是值,也叫值类型
    • 地址:用于引用计算机的内存地址,可理解为内存地址的标签,通俗一点讲就是一间房在小区里的门牌号。如下图①
    • 指针:指针变量存的是一个地址,这个地址指向的空间存的才是值(表示地址的指向,指针是一个指向另一个变量内存地址的值)。如下图②
    • &:取地址符,例如:{指针}:=&{变量}。如下图②
    • * :取值符,例如:{变量}:=*{指针}。如下图②

    图①

    图②

    二、指针的使用案例

    指针使用流程:

    • 定义指针变量。
    • 为指针变量赋值。
    • 访问指针变量中指向地址的值。

    在指针类型前面加上 * 号(前缀)来获取指针所指向的内容。

    案例一

    package main
    
    import "fmt"
    
    func main() {
       var a int= 10   /* 声明实际变量 */
       var ip *int        /* 声明指针变量 */
    
       ip = &a  /* 指针变量的存储地址 */
    
       fmt.Printf("a 变量的地址是: %x
    ", &a  )
    
       /* 指针变量的存储地址 */
       fmt.Printf("ip 变量的存储地址: %x
    ", ip )
    
       /* 使用指针访问值 */
       fmt.Printf("*ip 变量的值: %d
    ", *ip )
    }
    a变量的地址是:0xc042052058
    ip变量的存储地址是0xc042052058
    *ip变量的值是:10

    案例二

    package main
    import "fmt"
    // 我们用两个不同的例子来演示指针的用法
    // zeroval函数有一个int类型参数,这个时候传递给函数的是变量的值
    func zeroval(ival int) {
        ival = 0
    }
    // zeroptr函数的参数是int类型指针,这个时候传递给函数的是变量的地址
    // 在函数内部对这个地址所指向的变量的任何修改都会反映到原来的变量上。
    func zeroptr(iptr *int) {
        *iptr = 0
    }
    func main() {
        i := 1
        fmt.Println("initial:", i)
    
        zeroval(i)
        fmt.Println("zeroval:", i)
    
        // &操作符用来取得i变量的地址
        zeroptr(&i)
        fmt.Println("zeroptr:", i)
    
        // 指针类型也可以输出
        fmt.Println("pointer:", &i)
    }
    initial: 1
    zeroval: 1
    zeroptr: 0
    pointer: 0xc042052058

    空指针

    package main
    import (
        "fmt"
    )
    func main(){
        //下面一行代码注释就是空指针,那么值为0
        var a int = 1
        var ip *int = &a
    
        fmt.Printf("ip的值为:%x", ip)
    
        if (ip == nil) {
            fmt.Printf("是空指针")
        } else {
            fmt.Printf("非空指针")
        }
    
    }
  • 相关阅读:
    hdoj1856
    hdoj1009
    hdoj2191
    hdoj1203
    hdoj1053
    hdoj1529
    hdoj1829
    Flex2 Tree从XML文件中加载数据
    RoR:Ruby On Rails 的 Web Service
    Flex2 数据的验证方法以及如何改变错误提示的CSS
  • 原文地址:https://www.cnblogs.com/wt645631686/p/9454061.html
Copyright © 2011-2022 走看看