Char指针指向char数组而不是单个char?

时间:2014-02-09 18:48:08

标签: c++ pointers map char

当我使用char指针指向单个char时,它似乎最终指向char数组。这里出了什么问题?

 #include <iostream>
 #include <map>

 using namespace std;

 int main() {

     char first = 'a';
     char second = 'b';
     char third = 'c';

     map<char, char *> myMap;

     myMap['a'] = &first;
     myMap['b'] = &second;
     myMap['c'] = &third;

     cout << myMap['a'] << endl; // ends up printing 'abc' or 'cba'

     system("pause");
     return 0;    
 }

1 个答案:

答案 0 :(得分:6)

operator<<

char*重载需要一个指向空终止字符数组的指针,以便它知道字符串的结束位置。只是碰巧你的char变量在内存中连续分配,并且跟随它们的是0字节。代码调用了未定义的行为。

要打印单个字符,请取消引用指针:

cout << *myMap['a'] << endl;