【问题标题】:Error when print char array without index cpp [duplicate]打印没有索引 cpp 的 char 数组时出错 [重复]
【发布时间】:2016-02-14 06:58:35
【问题描述】:

我是 C++ 新手,我正在编写这个程序:

#include <iostream>
#include <string>

using namespace std;

void main() {
    char s[2] = { 'a', 'l' };
    cout << s << endl;
}

当我运行这段代码时,我得到如下错误输出:

al╠╠╠╠╠╠H²O

为什么?因为当我学习 C++ 时,当我打印字符数组时,我会看到像字符串这样的数组元素。

【问题讨论】:

  • s 不是以零结尾的。当传递给cout 时,它会衰减为char*,一个C 风格的字符串。它需要以零结尾,因为没有附加长度信息。
  • ╠ 在代码页 437 中为 0xCC,MSVC fills 0xCC to uninitialized memory to help debugging。这意味着您访问了未初始化的内存。你可以在这里找到关于 ╠ 和 0xCC 的大量问题

标签: c++ arrays visual-studio


【解决方案1】:

你的 char 数组不是以零结尾的,std::cout 不知道你的字符串在哪里结束。

你需要这样做:

char s[3] = { 'a', 'l', '\0'};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 2012-05-13
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    相关资源
    最近更新 更多