所以我正在做一个计算字符数组中字符数量的超级简单程序,而且我得到的返回值实际上没有任何意义......
这是功能:
int countLetters(const char s[])
{
int count = 0;
while(s[count] != '\0')
{
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而且我真的不知道为什么... count是一个局部变量因此它不应该保存该值,它甚至会被重置为每个函数调用开始时为0,它仍然可以正常工作。是否存在一些语法问题,或者我的编译器有什么问题?我真的无法弄清楚问题是什么......
答案 0 :(得分:7)
此:
const char ch[5] = {'h','e','l','l','o'};
不是以空值终止的。这样:
const char ch[6] = {'h','e','l','l','o', 0 };
会。你所看到的是未定义的行为。