博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
隐藏的数据类型-引用
阅读量:6150 次
发布时间:2019-06-21

本文共 588 字,大约阅读时间需要 1 分钟。

hot3.png

汇编语言中,引用就是内存的地址,是一个数字类型。

C 语言中,引用是通过指针实现的,而其类型是和其指向的类型有关的一种类型。

在函数式语言中,没有显式的引用,函数的参数默认是传递值,无法传递引用,这在并发类语言中尤其明确。而这样设计的初衷是为了防止程序员不小心修改了共享的变量,而造成并发行为发生不可预料的后果。

我认为,引用应当作为一种独立的类型,分离出来。即使是支持并发的语言,也不要强制禁止传递引用,禁止对值的修改,因为这是程序员的权利。

ref = *value  ref_value = &ref

为了避免影响编译器对内存的调度,引用不能当成一种数字类型,也不能和引用所指向的类型相关。 type(ref) == 'ref'

引用可以复制,可以作为参数传递,在对引用计算的时候,会自动解引用,

other_ref = ref  accept_ref_function(ref_var)  ref_var.type() // equal &ref_var.type();

而函数的参数传递,传递的是值,而不是引用。如果想传递引用,就显式的定义:

var_ref = *var  accept_ref_func(var_ref)

语言设计应当尽可能的把潜规则显式的表达出来。

转载于:https://my.oschina.net/u/563463/blog/618090

你可能感兴趣的文章
解决ros建***能登录不能访问内网远程桌面的问题
查看>>
pfsense锁住自己
查看>>
vsftpd 相关总结
查看>>
售前工程师的成长---一个老员工的经验之谈
查看>>
Get到的优秀博客网址
查看>>
【Git入门之四】操作项目
查看>>
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
luov之SMTP报错详解
查看>>
软件概要设计做什么,怎么做
查看>>
dwr
查看>>
java的特殊符号
查看>>
word2010中去掉红色波浪线的方法
查看>>
fabric上下文管理器(context mangers)
查看>>
JQuery-EasyUI Datagrid数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)
查看>>
并发和并行的区别
查看>>
php小知识
查看>>
Windows下安装、运行Lua
查看>>
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解(二)
查看>>