由于C++标准库中I/O类对<<操作符重载,因此在遇到字符型指针时会将其当作字符串名来处理,输出指针所指的字符串。既然这样,那么我们就别让它知道那是字符型指针,所以得用到强制类型转换,不过不是C的那套,我们得用static_cast来实现,把字符串指针转换成无类型指针,这样更规范,如下:
#include
<iostream> using std::cout; using std::endl; int main() { const char *pszStr
= "this
is a string" ; //
输出字符串 cout
<< "字符串:" <<
pszStr << endl; //
如我们所愿,输出地址值 cout
<< "字符串起始地址值:
" <<
static_cast < const void *>(pszStr)
<< endl; return 0; }
同时,若有:
char
*p1;int64 *p2; p1=( char
*) 0x800000 ; p2=(int64
*) 0x800000 ; char
*a=p1+ 2 int64_t
*b=p2+ 2 则有:a=0x800002,b=0x800010
注意这里0x800000
的单位是B而不是b!
|