使用带有char变量的指针

Pin*_*k F 2 c++ pointers

假设

char a='s';
Run Code Online (Sandbox Code Playgroud)

现在我想在char指针p中存储变量a的地址

char *p=&a;
Run Code Online (Sandbox Code Playgroud)

如果我使用cout << p;然后我得到值s,而不是地址!

任何人都可以解释为什么会这样?

ken*_*ytm 8

basic_ostream<<运营商是专门为const char*参数*,输出它像一个C字符串**.请参阅答案为什么cout打印char数组与其他数组不同?了解更多细节.

基本上,你可以投pvoid*印刷得到的地址时.

cout << static_cast<void*>(p);
Run Code Online (Sandbox Code Playgroud)

*:另外const charT*其中charT是由所采用的字符类型basic_ostream,并const unsigned char*const signed char*如果所述charT == char.例如,wcout将a const wchar_t*视为(宽)C字符串,但cout会将其视为指针.

**:这是由于使用的角色特征而过度basic_ostream.有关详细算法,请参阅C++标准§[ostream.inserters.character]/4.

  • 肯尼没有在他的第一句话中作出解释吗? (4认同)