递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 7961|回复: 11
打印 上一主题 下一主题

[视窗] 为何常量用作参数时,常量值可以被修改?

[复制链接]

149

主题

941

帖子

3976

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3976
QQ
跳转到指定楼层
楼主
发表于 2021-6-27 01:40:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 朕的 于 2021-6-27 01:45 编辑

写了个mysql的扩展,搞半天没找到bug原因,最后原来是赋值的常量被修改了,后面的命令再调用此常量已经变了。后来才发现是常量被修改了。特意试了下易语言,易语言里常量这种操作是不会被修改的,而且传入的程序可以调用赋值后的参数可以得到新的赋值,且常量没有被改。


全国江浙沪音视频通讯、视频会议互动
回复

使用道具 举报

55

主题

313

帖子

2478

积分

金牌会员

Rank: 6Rank: 6

积分
2478
QQ
沙发
发表于 2021-6-27 08:07:08 来自手机 | 只看该作者
火山或者c++调用方法(子程序)参数应该是引用传递,你试试执行mysql语句有个“错误信息”参数,就是提供一个变量来接收错误信息的,和这个例子一样的原理
回复

使用道具 举报

26

主题

1902

帖子

6932

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6932
板凳
发表于 2021-6-27 12:15:26 | 只看该作者
C/C++ 的 const 常量只提供语法层面的保护,编译器会检查一些对常量进行修改的常规操作,但还有其他一些操作是编译器检查不出的。
就是说你可以用各种奇怪的手段修改 C/C++ 的常量。
回复

使用道具 举报

6

主题

64

帖子

2599

积分

金牌会员

Rank: 6Rank: 6

积分
2599
地板
发表于 2021-6-27 13:00:40 | 只看该作者
Xelloss0618 发表于 2021-6-27 12:15
C/C++ 的 const 常量只提供语法层面的保护,编译器会检查一些对常量进行修改的常规操作,但还有其他一些操 ...

按帖子中图片那样生成的代码并没有const,只是一个局部静态变量。所以修改是合法的,这里更像是语义的问题,他想要一个常量,编译器却只是生成了一个static修饰的变量。
火山PC交流群: 748413192
回复

使用道具 举报

444

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
40545
5#
发表于 2021-6-27 13:27:10 | 只看该作者
参数相当于是个变量。所以这个时候输出的信息已经不是从常量输出了,而是从参数取这个数据。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

149

主题

941

帖子

3976

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3976
QQ
6#
 楼主| 发表于 2021-6-27 14:40:53 | 只看该作者
李先森 发表于 2021-6-27 08:07
火山或者c++调用方法(子程序)参数应该是引用传递,你试试执行mysql语句有个“错误信息”参数,就是提供一 ...

你说的是变量,变量是肯定可以被修改。这个说的是常量,常量被修改了
全国江浙沪音视频通讯、视频会议互动
回复

使用道具 举报

149

主题

941

帖子

3976

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3976
QQ
7#
 楼主| 发表于 2021-6-27 14:42:40 | 只看该作者
创世魂 发表于 2021-6-27 13:27
参数相当于是个变量。所以这个时候输出的信息已经不是从常量输出了,而是从参数取这个数据。 ...

也就是说,常量被用作参数时,可以被修改是合理的是吗?
全国江浙沪音视频通讯、视频会议互动
回复

使用道具 举报

149

主题

941

帖子

3976

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3976
QQ
8#
 楼主| 发表于 2021-6-27 14:48:03 | 只看该作者
创世魂 发表于 2021-6-27 13:27
参数相当于是个变量。所以这个时候输出的信息已经不是从常量输出了,而是从参数取这个数据。 ...

取值确实可以取,但为何能赋值成功就不知道了
全国江浙沪音视频通讯、视频会议互动
回复

使用道具 举报

12

主题

229

帖子

2059

积分

金牌会员

Rank: 6Rank: 6

积分
2059
9#
发表于 2021-6-27 18:01:04 来自手机 | 只看该作者
是有点奇怪,加上又是字符串,楼主看看基本数据类型会变化吗?
回复

使用道具 举报

13

主题

56

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
10#
发表于 2021-6-27 23:00:07 | 只看该作者
试了下,真的是这样。
定义好的常量被传参修改了。。。 。。。
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-25 12:50 , Processed in 0.083702 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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