// 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;
};
我真的不明白这实际上如何回归&#34; Blau&#34;而不只是B或其他东西。
我正在做的是将char数组分配给单个char指针的起始指针。
我真的很想明白为什么会这样。也许是因为std :: cout获得该类型的所有值?所以不是&#34; B&#34;它说&#34;布劳&#34;
答案 0 :(得分:1)
myChar
不是单个char
,而是指向此类的指针(并且您可以始终执行指针算术/索引而不是直接取消引用)。
并且operator<<
对ostream&
+ char*
有一个重载,将其作为指向0终止字符串的指针输出。
所以,没有任何意外。
答案 1 :(得分:1)
指向单个对象的指针与指向数组第一个元素的指针之间没有区别。程序员应该知道如何解释它;或使用更友好的类型,如std::string
。
当您使用char*
流式传输<<
时,它会假定它是指向零终止C样式字符串的第一个元素的指针,并打印它找到的所有字符,从中开始一,直到找到一个零值。
答案 2 :(得分:0)
c ++中的数组是指向数据块第一个元素的const指针。因此,您的颜色变量是指针。