1. 以下代码哪个等同于 int i = (int)p; p 的定义为 char *p
A. int i = dynamic_cast<int> (p)
B. int i =static_cast<int>(p)
C. int i =const_cast<int>(p)
D. int i = reinterpret_cast<int>(p)
编程分析:
#include <iostream>
using namespace std;
void main(void)
{
char *p = "a";
int i = (int)"a";
int i2 = (int)p;
//int i3 = static_cast<int>(&p);//failed
int i5 = reinterpret_cast<int>(&p);
cout << p <<endl;
cout << &p <<endl;
cout << i << endl;
cout << i2 <<endl;
cout << i5 <<endl;
}
reinterpret_cast一定不改变原数据,直接(int)可能改变原数据。