char *p="abcd";
在C语言里,输出一个字符串的指针很方便,直接printf("%p/n",p);就输出了。
而C++里cout太自作聪明了,为了省去我们循环输出字符的麻烦,cout<<p<<endl;被翻译为输出p指向的字符串值。
这个时候要输出p的指针值就只能先将其转为void *再输出。因为void型, cout没法输出,只能乖乖输出指针。此外cout<<&p<<endl;是不可取的,它其实等效于printf("%p/n",&p);
void main()
{
char *p2="abcd";
cout<<*p2<<endl;
cout<<p2<<endl;
printf("%p/n",&p2);
cout<<&p2<<endl;
void *p=p2;
cout<<p<<endl;
}
a
abcd
0013FF7C
0013FF7C
0046F020
Press any key to continue
随便测试一下就可以看出,0046F020才是p的值,0013FF7C实际为&p.