标题:[原创]对const使用的理解.
只看楼主
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
得分:0 
回楼上,实际编译时,
printf("%d",a);
会被直接用立即数代替进行编译,即变成
printf("%d",3);

这是我的编译器的结果,并且是在非调试模式下



by 雨中飞燕 C/C++学习讨论群:46520219
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge)论坛:[/url] http://yzfy.org/bbs/
Blog: http://yzfy.org/blog/blog.php?uid=2

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url] [url=http://blog.programfan.com/article.asp?id=24801]请不要写出非int声明的main函数[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=181314]C++编写的Windows界面游戏[/url]
2007-11-18 15:26
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
得分:0 
回复:(雨中飞燕)[quote]但事实上,a的值是可能改变的...

我在Red Hat Linux 9.0的版本上试了一下.
完全可以.



wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-11-18 18:34
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
得分:0 
我在DEV_C++和VC 6.0中运行的结果都是3

雁无留踪之意,水无取影之心
2007-11-18 18:42
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
得分:0 
我在TC2.0下运行可以.

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-11-18 18:47
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
得分:0 
楼上在12楼发的图片表明了什么?
我并没有看到你的程序的运行结果,你只说明可以编译成功而已



by 雨中飞燕 C/C++学习讨论群:46520219
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge)论坛:[/url] http://yzfy.org/bbs/
Blog: http://yzfy.org/blog/blog.php?uid=2

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url] [url=http://blog.programfan.com/article.asp?id=24801]请不要写出非int声明的main函数[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=181314]C++编写的Windows界面游戏[/url]
2007-11-18 20:16
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 

此贴作废

[此贴子已经被作者于2007-11-19 11:51:36编辑过]



HcT19z7H.png (23.94 KB)


i4yd93Ca.png (16.04 KB)


qkUlrPCF.png (15.97 KB)


7Wy9qJ1J.png (15.95 KB)

—>〉Sun〈<—
2007-11-18 21:14
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
得分:0 

const 的实质只是对被修饰的对象不能改变,但是任何间接引用改对象都会被改变。飞燕举的例子就能说明~
从这个性质还可以引申到new和delete的动态分配,即是指针被释放,但是那块堆内存还是可以被指针取用的,为了防止这种取用,释放后还应将指针赋值为NULL~


樱花大战,  有爱.
2007-11-18 21:19
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
得分:0 
cosdos原来的帖子说的那么好干嘛删了???



by 雨中飞燕 C/C++学习讨论群:46520219
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge)论坛:[/url] http://yzfy.org/bbs/
Blog: http://yzfy.org/blog/blog.php?uid=2

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url] [url=http://blog.programfan.com/article.asp?id=24801]请不要写出非int声明的main函数[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=181314]C++编写的Windows界面游戏[/url]
2007-11-19 13:23
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
得分:0 
回复:(雨中飞燕)楼上在12楼发的图片表明了什么?我...
这个图片能不能说明问题?...


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-11-19 13:53
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 

对 const 的处理只能说是编译器作的还不够。
const 声明的变量应当放在 常量数据段。

如 "字符串"

char * p = "abd";
char * pc = p;

pc[0] = 'x'; // 这个完全是不可行的,可以通过编译,
// 运行程序后,操作系统会结束该程序,
// 并且可能弹出窗口 “是否发送错误消息”。


所以我的帖子都作废了。

[此贴子已经被作者于2007-11-19 15:15:38编辑过]


—>〉Sun〈<—
2007-11-19 15:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-186615-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027436 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved