当前位置: 代码迷 >> C语言 >> 讨论一个程序(常量数组和普通常量const)
  详细解决方案

讨论一个程序(常量数组和普通常量const)

热度:137   发布时间:2007-11-18 22:14:34.0
感觉cosdos说法有问题,c1是立即数就没自己的内存了?
----------------解决方案--------------------------------------------------------
回复:(PcrazyC)以下是引用cosdos在2007-11-18 21:4...

此贴作废

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


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

此贴作废!

[此贴子已经被作者于2007-11-19 12:13:05编辑过]


----------------解决方案--------------------------------------------------------
我用的是*(int *)&c2[0],c2[0]是一个const 常量

[此贴子已经被作者于2007-11-18 22:33:25编辑过]



----------------解决方案--------------------------------------------------------
以下是引用cosdos在2007-11-18 22:21:17的发言:
以下是引用中学者在2007-11-18 22:14:34的发言:
感觉cosdos说法有问题,c1是立即数就没自己的内存了?

4 这个数字有地址吗。

即使不是立即数,但 const 声明的变量本来就是不能改变的。


// 这贴当没发,看楼上。

这点毋庸置疑,主要原因归于指针。
c1是普通变量,c2是一个指针常量.
c1被强制转型不会去掉常数性,
c2被强制转型时去掉常数性.


----------------解决方案--------------------------------------------------------
我用的是*(int *)&c2[0],c2[0]是一个const 常量

*(int *)&c2[0] 与 *(int *)c2 对于一维数组完全可以等价使用。

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

对于这个程序,编译器处理常量数组 的不足。

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


----------------解决方案--------------------------------------------------------
常量应放在 常量数据段,但编译器对常量数组却没有做到这点。
所以才有此问题。

[刚刚想到的]

书上提到过 "字符串" ,但没有把 const 和 字符串想到一起。

[此贴子已经被作者于2007-11-19 12:18:26编辑过]


----------------解决方案--------------------------------------------------------
以下是引用cosdos在2007-11-19 12:10:48的发言:
常量应放在 常量数据段,但编译器对常量数组却没有做到这点。
所以才有此问题。

[刚刚想到的]

书上提到过 "字符串" ,但没有把 const 和 字符串想到一起。


我最开始也是这样认为的,但我把它们的地址输出后是在一个数据段的

const常量数组和字符串又不同,你对字符串进行这样的操作是非法的


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