const修饰的变量能否被修改?

标签:
const可以被修改修饰杂谈 |
分类: C/CPP |
但是事实是这样吗??当然不是。。。。。在C专家编程里面有提到,用const来修饰的变量如果已经初始话了,就不能再给这个
变量直接赋值,但是我们可以用到其他的方法来改变它的值。只要不用这个变量来赋值就可以啦,那么我们就会想到,我直接利
用它的地址来修改。下面就是我的代码:
void
{
}
void
{
}
这个到底是为什么第一个输出结果是5,但是第二个输出结果就是6呢??难道是内存里面的数值又变回去啦??其实里面的内存没有变回去,
只是用数值输出的时候,const修饰的变量I已经跟初始话的数值挂钩了,输出的时候不用访问内存,直接替换。但是字符窜输出的时候因为要
从变量中寻找数组地址,所以后面2次用P输出,但是会不同的原因啦!
为了证明这个我写了一个代码:
-
- #include<stdio.h>
- void
test( constlong p) -
{
-
*point; -
b[]= "world"; -
printf( -
point=( *)&p; -
*point=( -
printf( - }
- void
main( intargc, char**argv) - {
-
a[]= "hello"; -
-
test(( -
- }