"> ">

假定有char * P="Hello";,要输出这个字符串的地址值的正确写法是()

假定有char * P="Hello";,要输出这个字符串的地址值的正确写法是()


A、

cout<< *P


B、

cout<<P


C、

cout<<&P


D、

cout<<(void *)P


【正确答案】:D
【题目解析】:

char* 是声明一个字符类型的指针。这个指针指向的地址上只能存放字符类型的值。
由于C++标准库中I/O类对<<操作符重载,因此在遇到字符型指针时,会将其当作字符串名来处理,输出指针所指的字符串。既然这样,那么我们就别让它知道那是字符型指针,所以得用到强制类型转换,把char的指针转换为无返回值指针类型,即cout<<(void *)P,故选D。
A输出的是H;B输出的是hello;C输出的是指针的地址。


Top