当前位置: 代码迷 >> C语言 >> [原创]对const使用的理解.
  详细解决方案

[原创]对const使用的理解.

热度:459   发布时间:2007-11-18 15:26:31.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]
----------------解决方案--------------------------------------------------------
回复:(雨中飞燕)[quote]但事实上,a的值是可能改变的...

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



----------------解决方案--------------------------------------------------------
我在DEV_C++和VC 6.0中运行的结果都是3
----------------解决方案--------------------------------------------------------
我在TC2.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-19 11:51:36编辑过]


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
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]
----------------解决方案--------------------------------------------------------
回复:(雨中飞燕)楼上在12楼发的图片表明了什么?我...
这个图片能不能说明问题?...


----------------解决方案--------------------------------------------------------

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

如 "字符串"

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

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


所以我的帖子都作废了。

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


----------------解决方案--------------------------------------------------------
  相关解决方案