数组虽然很简单的结构, 但是使用起来还是不免会出现错误。。 现在写这篇文章,主要是为了避免以后犯同样的错误。。。
先解析代码:
std::list<char *> list_str;
//std::list<std::string> list_str;
for (int i = 0; i < 4; i++)
{
char str[20] = {0};
std::cin >> str;
list_str.push_back(str);
}
C++中的list加入四个元素。。 这些字符串由用户输入,局部的数组存储。
然后打印输出发现, 四个元素都是一样的。 。
分析: 1. 改list存储的元素是字符串的指针。。 2. 该字符数组是局部变量。 每次loop完之后, 都会置为0。然后指向当前次输入的字符串。。
结论: 需要知道容器内存储的是内容是什么类型的。 如果是指针的话,那么指针所指向的内容就不应该为局部变量。
更正方法:
由固定的数组来存储字符串的内容。
char str[][6] = {"fuck", "you", "ok"};