局部变量在 c++ 中未重置为 0 的奇怪问题

Weird issue where a local variable isn't resetting to 0 in c++

本文关键字:问题 c++ 局部变量      更新时间:2023-10-16

所以我正在执行一个超级简单的程序来计算字符数组中的字符数量,而我得到的返回值确实没有任何意义... p>这是功能:

    int countLetters(const char s[])
    {
    int count = 0;
    while(s[count] != '')
        {
        count = count + 1;
        }
    return count;
    }

我的主要功能具有以下方式:

    const char ch[5] = {'h','e','l','l','o'};
    const char cha[5] = {'a','b','c','d','e'};
    const char chacha[1] = {'a'};
    cout << countLetters(ch);
    cout << countLetters(cha);
    cout << countLetters(chacha);

预期的输出应该是5 5 1,但是我得到8 13 14,我真的不知道为什么...计数是局部变量,因此它不应该保存值,甚至重置为0在每个函数调用开始时,它仍然可以正常工作。是否存在一些语法问题,或者我的编译器有问题?我真的不知道问题是什么...

this:

  const char ch[5] = {'h','e','l','l','o'};

不是无效的终止。这个:

  const char ch[6] = {'h','e','l','l','o', 0 };

会。您看到的是未定义的行为。