c++ - 将 char 数组分配给单个 char 的奇怪行为

标签 c++ arrays pointers

// 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/

相关文章:

c++ - 读取文件的输入循环

c++ - 如何水平连接 OpenCV 轮廓?

c++ - 将非特化类作为模板参数传入

javascript - 如何在方表中找到一个数字所属的一组数字的索引?

c - 查看使用指针创建的动态变量?

c++ - C 将参数作为空指针列表传递给从 LoadLibrary() 导入的函数

c++ - 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上?

c - 比较两个字符串时 strncmp 给出段错误

java - java中元素未写入数组

c - 程序在尝试对结构的指针成员进行 malloc 时出现段错误