zoukankan      html  css  js  c++  java
  • 指针类型

    # 指针类型
    每个变量在内存中都有对应存储位置(内存地址),可以通过&运算符获取。指针是用来存储变量地址的变量
    1)声明
    指针声明需要指定存储地址中对应数据的类型,并使用*作为类型前缀。指针变量声明后会被初始化为nil,表示空指针
    var pointer01 *int
    var pointer02 *float64
    var pointer03 *string
    fmt.Println("%T, %T, %T\n", pointer01, pointer02, pointer03)
    fmt.Println(pointer01, pointer02, pointer03)
    fmt.Println("%t, %t, %t\n", pointer01==nil,pointer02==nil, pointer03==nil)
    /*
    %T, %T, %T  <nil> <nil> <nil>
    <nil> <nil> <nil>
    %t, %t, %t  true true true 
    */
    2)初始化
    a)使用&运算符+变量初始化:&运算符获取变量的存储位置来初始化指针变量
    b)使用new函数初始化:new函数根据数据类型申请内存空间并使用零值填充,并返回申请空间地址
    var (
    	age int = 30
        heigh float64 = 1.68
        motto string = "少年经不得顺境,中年经不得闲境,晚年经不得逆境"
    )
    // 指针变量初始化
    pointer01, pointer02, pointer03 = &age, &heigh, &motto
    pointer04, pointer05, pointer06 := &age, &heigh, &motto
    pointer07, pointer08, pointer09 := new(int), new(float64), new(string)
    // 打印变量地址
    fmt.Println(&age, &heigh, &motto)
    // 打印指针变量
    fmt.Println(pointer01, pointer02, pointer03)
    fmt.Println(pointer04, pointer05, pointer06)
    fmt.Println(pointer07, pointer08, pointer09)
    /*
    0xc000014088 0xc0000140a0 0xc000046230
    0xc000014088 0xc0000140a0 0xc000046230
    0xc000014088 0xc0000140a0 0xc000046230
    0xc0000140a8 0xc0000140b0 0xc000046240
    */
    3)操作
    可通过*运算符+指针变量名来访问和修改对应存储位置的值
    fmt.Println(age, height, motto)
    fmt.Println(*pointer01, *pointer02, *pointer03) // 通过指针变量访问位置存储的值
    //通过指针变量访问修改存储的值
    *pointer01 += 1
    *pointer02 = 1.70
    *pointer03 != "--周杰伦"
    fmt.Println(*pointer01, *pointer02, *pointer03) // 通过指针变量访问位置存储的值
    fmt.Println(age, heigh, motto) //打印变量值
    fmt.Println(&age, &heigh, &motto)// 打印变量地址
    fmt.Println(pointer01, pointer02, pointer03) // 打印指针变量
    /*
    30 1.68 少年经不得顺境,中年经不得闲境,晚年经不得逆境
    30 1.68 少年经不得顺境,中年经不得闲境,晚年经不得逆境
    31 1.7 少年经不得顺境,中年经不得闲境,晚年经不得逆境--周杰伦
    31 1.7 少年经不得顺境,中年经不得闲境,晚年经不得逆境--周杰伦
    0xc000014088 0xc0000140a0 0xc000046230
    */
    

    -------------------------------------------

    个性签名:代码过万,键盘敲烂!!!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

  • 相关阅读:
    C++线程池实现-代码分析
    TortoiseGit如何更换用户名和密码
    go 访问apollo配置
    go 操作redis遇到的坑
    java类加载过程
    了解Python
    Java线程
    百度搜索引擎和谷歌搜索引擎的区别
    设置swiper容器同时显示的slide数量
    CSS last-child不起作用
  • 原文地址:https://www.cnblogs.com/weiweivip666/p/15736351.html
Copyright © 2011-2022 走看看