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
    

      

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

      

  • 相关阅读:
    Eclipse 插件安装、升级和卸载的方法
    Eclipse中Spring插件的安装
    为eclipse离线安装hibernate tools插件
    Eclipse中Hibernate插件的安装
    Nginx安装配置
    app自动更新(android)
    PhoneGap应用图标icon和启动页面SplashScreen
    highcharts图表的图例legend
    安装android的sdk
    设置全屏
  • 原文地址:https://www.cnblogs.com/sxzwj/p/8882673.html
Copyright © 2011-2022 走看看