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

 
  
int *ap;
asdfasd 
 
  
1.天告诉我,如何去掉这个代码的格式,为什么CSDN发个博客这么慢,这么难。我的天,忒慢了。
2. 问什么总是代码格式,为什么去不掉。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
 
  
阿斯顿发
a) C++程序代码如下:
const int ii = 1;
int * const pi =const_cast(&ii);
*pi = 12;
cout<

其结果:1 12

导致通过变量名访问和通过指针访问,出现了不一致。

b)代码如下:

int iii = 13;
int * const pii = &iii;
*pii = 234;
cout<

  其结果:234   234

c) 上述都是C++程序,说明了C++编译器对const变量和普通变量对待是不一样的。首先一点,const的只读,是由编译器限制的,也就是说其对应的变量并不存储在只读内存区;第二点,对于const编译器总是将其直接替换为立即数,而普通变量则不是,普通变量的替换使其有无改变而定。

d)  和#define的区别:1)有无类型检查2)是否为真正常量(#define:字符串定义在只读数据区,数据常量编译为立即数寻址,即二进制代码的一部分,所有都是在编译期间进行查找和替换,并由系统判断是否被修改;const只是编译器检查其有无被修改,所修饰变量的作用域决定了内在位置和属性,其为假常量。)




参考文献:

《C++逆向分析技术揭秘》

《Effective C++》

《深度探索C++对象模型》





 
  
 
 

你可能感兴趣的:(C++基础技术)