zoukankan      html  css  js  c++  java
  • goland 记"*"与"&"的使用

    首先引用一段Go语音中文网的代码:

    package main
    
    import "fmt"
    
    func main() {
    	var a int = 1  // int类型的值
    	var b *int = &a  // *int类型的指针,理解指向一个类型为int的值的地址的指针类型
    	var c **int = &b  // 指向*int的**int类型的指针
    	var x int = *b  // int类型的值
    	fmt.Println("a = ",a)
    	fmt.Println("&a = ",&a) // 取a变量的内存地址
    	fmt.Println("*&a = ",*&a) // 对a变量的内存地址取值
    	fmt.Println("b = ",b)  // *int类型的指针,a变量的内存地址
    	fmt.Println("&b = ",&b) // **int类型的指针,指向*int(a变量的内存地址)
    	fmt.Println("*&b = ",*&b) // 对**int取值,值为*int(a变量的内存地址)
    	fmt.Println("*b = ",*b) // 对*int取值,值为int(a的值)
    	fmt.Println("c = ",c)  // **int类型的指针,指向*int(a变量的内存地址)
    	fmt.Println("*c = ",*c) // 对**int取值,值为*int(a变量的内存地址)
    	fmt.Println("&c = ",&c) // 取**int的内存地址
    	fmt.Println("*&c = ",*&c) // 对**int的内存地址取值
    	fmt.Println("**c = ",**c) // 对**int指向的内存地址的指针指向的值(a变量的内存地址)取值
    	fmt.Println("***&*&*&*&c = ",***&*&*&*&*&c)
    	fmt.Println("x = ",x) // 对*int指针指向的地址取值
    }
    
    //a =  1
    //&a =  0xc42001a0d0
    //*&a =  1
    //b =  0xc42001a0d0
    //&b =  0xc42000c028
    //*&b =  0xc42001a0d0
    //*b =  1
    //c =  0xc42000c028
    //*c =  0xc42001a0d0
    //&c =  0xc42000c030
    //*&c =  0xc42000c028
    //**c =  1
    //***&*&*&*&c =  1
    //x =  1
    

      

    指针变量前加"*"是对指针指向的地址取值,变量前加"&"是返回值的地址。

      

  • 相关阅读:
    Oracle DataGuard搭建(二)
    Oracle DataGuard搭建(一)
    Linux 安装oracle10g 配置dataguard 介绍和步骤
    Oracle DataGuard数据备份方案详解
    汽车行业的DMS系统 IT不变应万变
    汽车行业DMS系统介绍
    详解UML中的聚合,关联,泛化等关系
    ASP.NET将Session保存到数据库中
    C#快捷键
    Asp.net中使用资源文件实现网站多语言
  • 原文地址:https://www.cnblogs.com/sxzwj/p/8882673.html
Copyright © 2011-2022 走看看