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

jon*_*aul 3 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;    
 }
Run Code Online (Sandbox Code Playgroud)

jro*_*rok 6

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

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

cout << *myMap['a'] << endl;
Run Code Online (Sandbox Code Playgroud)