zoukankan      html  css  js  c++  java
  • 指针

    基本介绍

    1)基本数据类型,变量存的就是值,也叫值类型
    2)获取变量的地址,用&,比如:var num int , 获取num的地址:&num
    [root@node3 shangxuetang]# cat pointer.go
    package main

    import "fmt"

    func main() {

      //基本数据类型在内存的布局
      var i int = 10
      //i 的地址是什么,&i
      fmt.Println("i的地址=", &i)

    }

    3)指针类型,指针变量存的是一个地址,这个地址指向的空间存的才是值。比如: var ptr *int = &num
    4)获取指针类型锁指向的值,使用:*,比如: var prt *int, 使用*prt 获取 ptr 指向的值
    5)举例说明
      var num int = 1
      var i = 999
      var ptr *int = &i


    [root@node3 shangxuetang]# cat pointer.go
    package main

    import "fmt"

    func main() {

      //基本数据类型在内存的布局
      var i int = 10
      //i 的地址是什么,&i
      fmt.Println("i的地址=", &i)

      //下面的 var ptr *int = &i
      //1. ptr 是一个指针变量
      //2. ptr 是类型 *int
      //3. ptr 本身的值&i

      var ptr *int = &i
      fmt.Printf("ptr=%v ", ptr)
      fmt.Printf("ptr 的地址=%v ", &ptr)
      fmt.Printf("ptr 指向的值=%v ", *ptr)

    }
    [root@node3 shangxuetang]# go run pointer.go
    i的地址= 0xc4200100b8
    ptr=0xc4200100b8
    ptr 的地址=0xc42000c038
    ptr 指向的值=10

    练习题:

    1、写一个程序,获取一个int变量num的地址,并显示到终端
    2、将num的地址赋给指针 ptr,并通过ptr去修改num的值。
    [root@node3 shangxuetang]# cat lianxi.go
    package main

    import "fmt"

    func main() {

      var num int = 9
      fmt.Printf("num address=%v ", &num)

      var ptr *int
      ptr = &num

      *ptr = 10 //这里修改时,会导致num的值变化
      fmt.Println("num =", num)
    }
    [root@node3 shangxuetang]# go run lianxi.go
    num address=0xc4200100b8
    num = 10

    指针细节说明:

    1)值类型,都有对应的指针类型,形式为 *数据类型,比如int的对应的指针就是*int,float32 对应的指针类型就是 *float32,依次类推。
    2)值类型包括:基本数据类型 int 系列,float系列,bool,string、数组和结构体struct

  • 相关阅读:
    Matlab GUI保存图片
    Matlab GUI读入图片
    Android如何缓存你的BITMAP对象
    115个Java面试题和答案——终极列表(下)
    115个Java面试题和答案——终极列表(上)
    java面试题及答案(基础题122道,代码题19道)
    安卓面试题精华
    写些安卓开发的面试题
    Android笔试总结
    Android 面试题(答案最全)
  • 原文地址:https://www.cnblogs.com/green-frog-2019/p/11342601.html
Copyright © 2011-2022 走看看