Chinaunix首页 | 论坛 | 博客
  • 博客访问: 334576
  • 博文数量: 82
  • 博客积分: 2602
  • 博客等级: 少校
  • 技术积分: 660
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-10 08:48
文章分类

全部博文(82)

文章存档

2008年(17)

2007年(65)

分类: C/C++

2007-10-08 09:10:55

用const修饰的变量可以用指针修改其内容
const修饰的变量在编译时就做了替换
例一:
const int a=100;
int *p=(int*)&a;
*p=200;
printf("%d\n",*p);//显示200
printf("%d\n",a);//显示100
1) const无法避免使用指针p对其内容修改成200.现在存放a的内存内容是200
2) 第二个PRINTF打印出的100不是当时a的内容,而是编译看见const后,直接将100放在要打印的a的地方.所以输出的还是100
例二:
int main(int argc, char** argv)
{
        const int a=200;
        int *p;
        p = (int *)&a;
        printf("before a=%d\n", a);
        *p = 1000;
        printf("after a=%d\n", a);
                printf("*p=%d\n", *p);

        return 0;
}
输出200,200,1000.
也就是说,实际值被修改了,但是编译的时候看到a是const ,所以在输出a的时候,直接用200替换了
阅读(1329) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~