开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 726|回复: 11
收起左侧

[易语言] 关于易语言指针.参数参考的问题

[复制链接]
结帖率:40% (2/5)
发表于 2024-5-11 02:44:57 | 显示全部楼层 |阅读模式   湖北省襄阳市
13精币


https://bbs.125.la/forum.php?mod=viewthread&tid=14820947

上一个帖子.有描述一些问题,但是感觉还是开一个新帖子好一些..



1.png
2.png


3.png


我现在是有些疑问,主要是这段代码的输出结果,输出结果如下:


4.png


结论:
1.参考是直接传递的指针,就是按引用传递
2.” = “ 全部都是按值传递,应该是易语言除了 参考,就没有按引用传递了.
3.指针到变量,也是按值传递.
4.每次给 直接用 “等于号”  覆盖自定义结构体,都会申请一个新的地址,旧的指针地址是会变的,这个就很奇怪,既然不是按引用传递,只是按值传递,原指针应该不用变啊,感觉这块容易出问题,如果之前  子程序传递了参考的参数, 后面又覆盖了,指针地址变量,就又出问题了,而且还要考虑回收垃圾的问题..。


其他:

关于在多线程中给全局变量赋值的方式:
1.直接等于号, --->不合适,值只能单向传递了
2.定义一个新的类,所有对全局变量数组的操作都在这里处理,使用锁来处理竞争--->这个是之前全局变量和配置文件挂钩,但是直接写入文件有些数据会乱码,只能用锁保证数据完整...
3.定义一个类,新增 copy方法,在里面定义那些值是需要覆盖的,只覆盖需要覆盖的值,--->不合适,值只能单向传递了
4.使用参考, ---> 也不方便,只能在当前子程序使用,其他子程序要调用又要使用参考来传递,嵌套下去也挺恶心的。



试了多线程中调用数据,感觉也只能使用  索引的方式是最方便的了... 我是感觉在不同的子程序里面,每次用索引值来调用全局变量数组对象,就感觉挺恶心..大家都是这样调用吗?

大家都一般都怎么调用的呢,还是只有我感觉这种调用方式恶心呢,还是有更好的方式呢?












回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:91% (10/11)

签到天数: 21 天

发表于 2024-5-11 07:57:34 | 显示全部楼层   广东省惠州市
我通常用类来打包数据于内存,用时还原于局部变量!参考
https://bbs.125.la/forum.php?mod ... 14755161&extra=
回复

使用道具 举报

结帖率:100% (45/45)

签到天数: 21 天

发表于 2024-5-11 09:55:13 | 显示全部楼层   江西省南昌市
2.定义一个新的类,所有对全局变量数组的操作都在这里处理,使用锁来处理竞争--->这个是之前全局变量和配置文件挂钩,但是直接写入文件有些数据会乱码,只能用锁保证数据完整...


............对于独立的一个类,为啥要加锁,每个线程独立处理一个类不会竞争吧
............涉及到改写全部数据的,单独写一个线程拎出来?
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 17 天

发表于 2024-5-11 11:23:47 | 显示全部楼层   辽宁省朝阳市
你是不是钻牛角尖了?多线程最大的问题就是线程安全,怎么安全?加锁、原子操作。再多线程改变全局变量是最危险的。包括程序集变量。指针是为了减少内存开销,而不需要重复申请释放内存。C++中 传递参数一般都是推荐指针或&引用传递,➕const修饰符 就是为了不被修改,需要修改就去掉 const,说白了就是为了性能,哪怕你不加& 编译器也会根据代码进行优化。

至于你说的回收机制安全,易语言不能说没有,可以忽略的,没有指针,内存都是用完就释放,那来的内存泄漏。

最后,你说的索引调用,这个是所有语言都是这样做的,易语言除了数组没有别的  。不像其他语言有字典 map  等等,就算map 这些 也都是按索引 或者标识去调用,哪有什么直接办法,不然也不会出先这些东西。
回复

使用道具 举报

结帖率:40% (2/5)
 楼主| 发表于 2024-5-11 16:22:27 | 显示全部楼层   湖北省襄阳市
明天自然醒 发表于 2024-5-11 09:55
2.定义一个新的类,所有对全局变量数组的操作都在这里处理,使用锁来处理竞争--->这个是之前全局变量和配置 ...

这个新类是全局变量,数据更改之后要更新数据到文件的.所以加了锁
回复

使用道具 举报

结帖率:40% (2/5)
 楼主| 发表于 2024-5-11 16:28:22 | 显示全部楼层   湖北省襄阳市
weidongjun 发表于 2024-5-11 11:23
你是不是钻牛角尖了?多线程最大的问题就是线程安全,怎么安全?加锁、原子操作。再多线程改变全局变量是最 ...

我怎么记得不是这样的,我之前写java的,只是也好久没写了,我记得创建一个类以后,比如  
Class1 classA =new Class1()

那么这个classA,不管传递到哪方法,修改的都是classA这个对象,
如果 Class1 classB =new Class1()
     classB =classA    以后, 修改classB,就等同于修改classA ,我没记错就是这样的,除了基础类型,激活所有对象都是按引用传递的
回复

使用道具 举报

结帖率:40% (2/5)
 楼主| 发表于 2024-5-11 16:34:26 | 显示全部楼层   湖北省襄阳市
呵呵仙 发表于 2024-5-11 07:57
我通常用类来打包数据于内存,用时还原于局部变量!参考
https://bbs.125.la/forum.php?mod=viewthread&tid=1 ...

你的帖子就看不懂了.......汇编太差了,只能后面恶补一下汇编,可能理解会好一些
回复

使用道具 举报

结帖率:91% (10/11)

签到天数: 21 天

发表于 2024-5-11 17:12:10 | 显示全部楼层   广东省惠州市
沙皮的忧伤 发表于 2024-5-11 16:34
你的帖子就看不懂了.......汇编太差了,只能后面恶补一下汇编,可能理解会好一些 ...

不用理解汇编里是什么的.这个只是创造出一个函数的机器码而己.太短的机器码基本不会有什么恶意行为!长的就难说了!!所以说,知道这个ASM造的函数有什么用!怎样用就OK了!?没办法,易不像c++这类语言有newdelete关键词,可以创建内存版变量!!

点评

所以说,吴涛放弃易语言还是有原因的.但是,火山视窗感觉语法方面最终还是跑偏了!!   广东省惠州市  发表于 2024-5-11 17:18
回复

使用道具 举报

结帖率:100% (45/45)

签到天数: 21 天

发表于 2024-5-11 19:54:35 | 显示全部楼层   江西省南昌市
呵呵仙 发表于 2024-5-11 17:12
不用理解汇编里是什么的.这个只是创造出一个函数的机器码而己.太短的机器码基本不会有什么恶意行为!长的 ...

汇编咋整的,c编译成汇编?

点评

不是,反的易程序自带行为   广东省惠州市  发表于 2024-5-11 19:59
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 17 天

发表于 2024-5-12 00:02:23 | 显示全部楼层   辽宁省朝阳市
沙皮的忧伤 发表于 2024-5-11 16:28
我怎么记得不是这样的,我之前写java的,只是也好久没写了,我记得创建一个类以后,比如  
Class1 classA ...

这就是为什么易语言  是深拷贝的问题。不够灵活,性能不行的原因。不只是java 很多高级语言都是这个共性。C#更明显,字符串都是改一个地方全改。有好处有坏处。好处是性能好,坏处是对新手不友好。每种语言都有自己的特性。这也就是为什么有时候,发现不了问题,怎么看代码没问题,数据就是不对的原因
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表