zoukankan      html  css  js  c++  java
  • GO学习之 指针

    基本介绍:
    1)基本数据类型,变量存的就是值,也叫值类型

    2)获取变量的地址,用&,比如:var num int,获取num的地址,&num

    3)指针类型,变量存的是一个地址,这个地址指向的空间存的才是值

    比如:var prt *int = &num

    这时候ptr是一个指针

    4) 获取指针类型所指向的值,使用:*,比如: var prt *int,使用*prt 获取p指向的值

    例子:

    package main
    
    import "fmt"
    
    // 演示golang中指针类型
    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.Println("ptr的地址=", &ptr)
        fmt.Printf("ptr 指向的值=%v
    ", *ptr) // 也就是输出i 的值
    }

    1

    (1)写一个程序,获取一个int变量num的地址,并显示到终端

    (2)num的地址赋给指针ptr,并通过ptr去修改num的值

    package main
    
    import "fmt"
    
    func main() {
        // (1)写一个程序,获取一个int变量num的地址,并显示到终端
        // (2)将num的地址赋给指针ptr,并通过ptr去修改num的值
        var num int = 9
        fmt.Printf("num address=%v
    ", &num)
    
        var ptr *int 
        ptr = &num
        *ptr = 10 //这里修改时,会到num的值变化,指针地址对应相应的值
        fmt.Println("num =" , num)
    }
    

    指针地址加*就是相应的值。

    2

    package main
    import "fmt"
    
    func main(){
        //
        var a int = 300
        var b int = 400
        var ptr *int = &a // ptr指针变量为a的地址
        *ptr = 100 // a = 100
        ptr = &b  // ptr赋值为b的地址
        *ptr = 200
        fmt.Printf("a=%d,b=%d,*ptr=%d",a,b,*ptr)
        // a = 100 b = 100  *ptr = 200
    }
    

    指针的注意事项:

    1.值类型,都有对应的指针类型,形式为 * 数据类型,比如int的对应的指针就是 *int ,float32对应的指针类型就是 *float32,依次类推。

    2.值类型包括:基本数据类型int系列,float系列,boolstring,数组和结构体struct

  • 相关阅读:
    面试之求找两个数和为某个数、几个连续数等于某个数
    oracle 创建字段自增长——两种实现方式汇总
    UnityTestTools測试工具
    现代控制理论课件资料与说明
    教你轻松自己定义ViewPagerIndicator
    【Android】自己定义ListView的Adapter报空指针异常解决方法
    SICP-Exercise 1.5
    网络编程----------SOCKET编程实现简单的TCP协议
    字符串翻转
    机房收费系统重构(六)—泛型集合
  • 原文地址:https://www.cnblogs.com/hszstudypy/p/12500744.html
Copyright © 2011-2022 走看看