代码之家  ›  专栏  ›  技术社区  ›  Ben

C++数组新的乱码

c++
  •  2
  • Ben  · 技术社区  · 14 年前

    当我“不能”一个空数组时,我会胡言乱语。为什么?

    int main() { char test[10]; cout << test; return 0; }
    

    5 回复  |  直到 14 年前
        1
  •  4
  •   thyrgle thyrgle    14 年前

    因为您没有初始化数组,所以得到了一个垃圾值(测试[0]是您正在打印的内容)。

    初始化它:

    int main() { 
        char test[10] = {};
        cout << test;
        return 0;
    }
    

        2
  •  8
  •   GManNickG    14 年前

    因为你的数组没有初始化。它的内容可以是任何东西,使用它们可以获得未定义的行为。

    char test[10] = {};
    

    当打印出来的时候,什么都不会打印。

        3
  •  4
  •   AnT stands with Russia    14 年前

    C++中没有“空数组”这样的东西。你定义了一个10的数组 char 你有10个数组 烧焦 s、 因为它是一个本地数组,所以默认情况下它是未初始化的,这意味着 s包含垃圾。你印的就是那个垃圾。

        4
  •  1
  •   Justin Niessner    14 年前

    您的数组没有初始化为任何内容,您正在输出未初始化数组的第一个元素。

    int main() { char test[10] = {}; cout << test; return 0; }
    
        5
  •  0
  •   Montdidier rioc0719    14 年前

    char test[10] = {};

    有一些文字

    char test[] = "some text";

    作为个人角色

    char test[] = { 's', 'o', 'm', 'e' };

    第一个值集(对于字符串,这是一个空字符串,因为'\0'被视为终止符

    char test[] = { 0 };

    char test[];
    test[0] = '\0';
    

    在哪里?

    char* test = "some text";

    char test[]=“一些文本”;