// example: class constructor
#include <iostream>
#include <string>
class Test{
public:
char* getColor(){
return color;
}
private:
char color[5] = "Blau";
};
int main () {
Test s;
char *myChar = s.getColor();
std::cout << myChar;
return 0;
};
我真的不明白这实际上是如何返回“Blau”而不是 B 或其他东西的。
我所做的是将 char 数组的起始指针分配给单个 char 指针。
我真的很想明白为什么会这样。也许是因为 std::cout 获取了该类型的所有值?所以不是“B”而是“Blau”
最佳答案
指向单个对象的指针和指向数组第一个元素的指针之间没有区别。程序员应该知道应该如何解释它;或使用更友好的类型,如 std::string
.
当您流式传输 char*
时与 <<
,它假定它是指向以零结尾的 C 风格字符串的第一个元素的指针,并打印它找到的所有字符,从该字符开始,直到找到一个值为零的字符。
关于c++ - 将 char 数组分配给单个 char 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26678742/