如何欺骗const修饰的变量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengfeng0328/article/details/86715321

const的变量值真的不能更改吗?其实const机制是通过编译器检查实现的,程序在真正运行的过程中,并不关心变量是不是const的,只要我们能够保证编译不出错,然后在程序运行的过程中去修改即可。

示例如下:

int const a=10;
int *p=(int*)&a;// p指向了a

*p=100;// 运行后a=100了,值被改变了

上面的例子,a的内容从10被修改为100。尽管a被标记了const,并且代码中并没有直接对a进行修改,但是a可以被指针变量p引用,间接地被修改为100。const只是说明了a不能被修改,并没有说a的地址不可以被引用。所以,只要变量的地址存在被引用的可能,const修饰的变量是可以被间接修改的。但是我们并不建议那么做。。。 

猜你喜欢

转载自blog.csdn.net/fengfeng0328/article/details/86715321
今日推荐