C++基础知识面试笔试准备

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++对象模型》





 

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值