zoukankan      html  css  js  c++  java
  • Go语言学习笔记十四--一文搞懂Go语言指针

    运行代码观察现象:

     1 package main
     2 
     3 import "fmt"
     4 
     5 func change(num *int32) {
     6     *num += 100
     7 }
     8 
     9 func main() {
    10     var a int32
    11     a = 100
    12     fmt.Printf("a的值为:%d
    ", a)
    13     //用%p 来输出内存地址 用&符号取a的地址 这一点和C语言一样
    14     fmt.Printf("a的地址为%p
    ", &a)
    15 
    16     //这个p是引用类型 其实就是一个指针 和C语言里面的指针异曲同工
    17     //使用方式和C语言一模一样
    18     var p *int32
    19     p = &a
    20     fmt.Printf("p所保存的地址为%p
    ", p)
    21     fmt.Printf("p所指的变量的值为为%d
    ", *p)
    22 
    23     *p = 150
    24     fmt.Printf("指针修改后 p所指的变量的值为为%d
    ", *p)
    25     fmt.Printf("指针修改后 a的值为:%d
    ", a)
    26 
    27 
    28     //%T 表示输出其类型
    29     fmt.Printf("p的类型为%T
    ", p)
    30     fmt.Printf("a的类型为%T
    ", a)
    31 
    32     //通过指针和函数修改变量的值
    33     change(p)
    34     fmt.Printf("指针函数修改后 p所指的变量的值为为%d
    ", *p)
    35     fmt.Printf("指针函数修改后 a的值为:%d
    ", a)
    36 
    37     //修改数组就传数组的指针 同理
    38     //注意 切片是引用类型,切片也是指针只是是一个特殊的指针
    39      
    40 }
    输出结果:
    a的值为:100 a的地址为0xc000092000 p所保存的地址为0xc000092000 p所指的变量的值为为100 指针修改后 p所指的变量的值为为150 指针修改后 a的值为:150 p的类型为*int32 a的类型为int32 指针函数修改后 p所指的变量的值为为250 指针函数修改后 a的值为:250

    make和new的区别:

  • 相关阅读:
    Windows下建立FTP服务器站点
    Markdown语法指南
    Win7系统修改hosts无法保存怎么办?
    PHP 7 错误处理 Error
    strtotime 的 BUG
    三角箭头 css实现
    关于 layer.open 动态赋值不了的问题
    layui layer.open弹出框获取不了 input框的值
    webhook 自动部署代码
    lnmp 命令 及其 TP5 部署遇到的一些问题
  • 原文地址:https://www.cnblogs.com/xwxz/p/13323156.html
Copyright © 2011-2022 走看看