由于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!
|