• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go语言学习之值传递和引用传递解释AndGo语言指针

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  

值传递与引用传递的解释

上面提到了,当我们调用一个有参函数的时候,会把实际参数传递给形式参数。但是,在程序语言中,这个传递过程中传递的两种情况,即值传递和引用传递。我们来看下程序语言中是如何定义和区分值传递和引用传递的。

值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

 

引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数

参考地址:https://blog.csdn.net/w372426096/article/details/82216742

Go语言指针

什么是指针

就是变量在内存中的地址,它所指向的值的内存地址在32位和64位机器上分别占用4和8字节;

当一个指针被定义后 没有分配到 任何变量时,它的默认值为nil;

指针变量通常缩写为ptr

如何使用指针

示例1

package main

import "fmt"

func main(){
    var a int = 20       //声明一个实际变量
    var ptr *int         //声明一个指针变量,代表ptr这个变量是 指针变量
    ptr = &a             //用&取出a的内存地址,并赋值给ptr
    fmt.Printf("ptr变量的结果是: %x",ptr)
  
fmt.Printf("ptr指针变量实际的值为: %d \n", *ptr) //*ptr就是获取指针 实际对应的值
} 

结果:
ptr变量的结果是: c000060090

ptr指针变量实际的值为:10
 

取地址操作符{ & }和取值操作符{ * }是一对互补操作符

{ & }取出内存地址,{ * }根据内存地址取出 内存地址 实际指向的值

示例2

package main

import "fmt"

func main(){
    var a int = 10                        //声明一个实际变量
    fmt.Printf("内存地址为:%x \n", &a)      //获取a变量的内存地址
    test(&a)                              //&a获取变量a的内存地址,传给test函数
}

//声明一个函数,接收一个参数,参数 必须是指针类型,ptr为形参
func test(ptr *int) {
    fmt.Println(ptr)   //打印内存地址
}


结果:
内存地址为:c000060090 
0xc000010098

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go语言入门发布时间:2022-07-10
下一篇:
Docker 将go项目打包成Docker镜像发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap