关于cout输出字符串指针

时间:2023-01-04 12:36:06

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.