int *ap;
asdfasd
1.天告诉我,如何去掉这个代码的格式,为什么CSDN发个博客这么慢,这么难。我的天,忒慢了。
2. 问什么总是代码格式,为什么去不掉。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
阿斯顿发
a) C++程序代码如下:
const int ii = 1; int * const pi =const_cast<int *const>(&ii); *pi = 12; cout<<ii<<" "<<*pi<<endl;
其结果:1 12
导致通过变量名访问和通过指针访问,出现了不一致。
b)代码如下:
int iii = 13; int * const pii = &iii; *pii = 234; cout<<iii<<" "<<*pii<<endl;
其结果:234 234
c) 上述都是C++程序,说明了C++编译器对const变量和普通变量对待是不一样的。首先一点,const的只读,是由编译器限制的,也就是说其对应的变量并不存储在只读内存区;第二点,对于const编译器总是将其直接替换为立即数,而普通变量则不是,普通变量的替换使其有无改变而定。
d) 和#define的区别:1)有无类型检查2)是否为真正常量(#define:字符串定义在只读数据区,数据常量编译为立即数寻址,即二进制代码的一部分,所有都是在编译期间进行查找和替换,并由系统判断是否被修改;const只是编译器检查其有无被修改,所修饰变量的作用域决定了内在位置和属性,其为假常量。)
参考文献:
《C++逆向分析技术揭秘》
《Effective C++》
《深度探索C++对象模型》