【发布时间】:2020-07-29 14:12:27
【问题描述】:
我知道,在 char[] 中,我们在方括号之间写下字符的长度。
例如,如果我们写 char[10],它应该给我们 10 个字符或更少。
但是,在我的代码中,我输入我的名字“Ramunas”(这是 7 个字符),而不是给我 5 个字符(Ramun),它最终仍然给出“Ramunas”。为什么会这样?
#include <iostream>
using namespace std;
int main()
{
char a[5];
cout<<"Hello, enter your name: "<<endl;
cin>>a;
cout<<a<<endl;
return 0;
}
【问题讨论】:
-
这是因为程序有未定义的行为。您覆盖了数组之外的内存。
-
请注意,当您计算空终止符时,“Ramunas”是 8 个字符。另请注意,“Ramūnas”在 unicode 编码中可能包含更多字符。
-
这里是一个例子。一切似乎都是正确的,但你覆盖了变量
i: wandbox.org/permlink/p2LpOvIrVat3laaa
标签: c++