如果您将SIZE
从7更改为8,则以下代码会显示不一致。如果SIZE
为7,则strlen(chars)
将返回7;如果SIZE
为8,则strlen(chars)
会返回9,这不再等于SIZE
。
我知道strlen
适用于C-string并且下面的chars
不是C字符串(因为它没有空终止字符\0
) 。但我正在调试其他人的代码,并尝试理解为什么所描述的不一致性发生,即使strlen
似乎没有以正确的方式使用。有什么想法吗?
#include <iostream>
#include <string>
#define SIZE 7
int main ()
{
char chars[SIZE];
for (int i=0; i<SIZE; i++) chars[i]='A'+i;
std::cout<<"strlen(chars) = "<<strlen(chars)<<std::endl;;
std::cout<<"SIZE = "<<SIZE<<std::endl;;
return 0;
}
答案 0 :(得分:1)