指向char地址的指针的值

时间:2015-03-25 06:56:48

标签: c++ pointers

在VS C ++中,我有一个简单的char变量声明和一个指向char的指针。

char mychar = 'c';
char *mypointer = &mychar;

当使用cout打印mypointer的值时,我希望在控制台中出现像0038FEDC这样的8字符地址值。相反,我得到一些奇怪的结果,如:

  

c│■8,ck∙<,c;■8等...

为什么在输出指向char值的指针时会出现这些奇怪的字符?

1 个答案:

答案 0 :(得分:5)

<{> std::ostreamstd::cout是一个实例,operator<<有一个重载,它将char*视为指向 null中第一个字符的指针终止字符串

您传递的是一个单个字符的指针,而不是一个以空字符结尾的字符串。这会导致未定义的行为。

在实践中,可能发生的事情是,通过将内存从mychar作为char数组开始处理并迭代它,直到{{1},将打印出一个字符流。找到了。

如果您想打印地址,可以将指针投射到不是\0的地方:

char*