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)
operator<<过载char*需要一个指向一个空终止字符数组,以便它知道在串结束.碰巧你的char变量在内存中连续分配,并且跟随它们的是0字节.但代码调用了未定义的行为.
要打印单个字符,请取消引用指针:
cout << *myMap['a'] << endl;
Run Code Online (Sandbox Code Playgroud)