第6行定义了一个整型变量num,并初始化为0x00636261(十六进制表示),然后取num的地址用来初始化整型指针变量pnum。接着到了关键的地方,使用reinterpret_cast运算符把pnum从int*转变成char*类型并用于初始化pstr。 将pnum和pstr两个指针的值输出,对比发现,两个指针的值是完全相同的,这是因为“reinterpret_cast 运算符并不会改变括号中运算对象的值,而是对该对象从位模式上进行重新解释”。如何理解位模式上的重新解释呢?通过推敲代码11行和12行的输出内容,就可见一斑。 很显然,按照十六进制输出pnum指向的内容,得到636261;但是输出pstr指向的内容,为什么会得到”abc”呢?
|