C++ 数组的输出与输入不同
我正在尝试输入C++ 数组的输出与输入不同,c++,arrays,for-loop,multidimensional-array,C++,Arrays,For Loop,Multidimensional Array,我正在尝试输入 1 HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 但出于某种原因,我得到了这个作为我的输出 hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh 它应该输出相同的东西,所有的H,但不是它的输出少和一个随机的I。那是什么 #include <iostream> using namespace std; const int arrayElements = 40; int main() { in
1
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
但出于某种原因,我得到了这个作为我的输出
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
它应该输出相同的东西,所有的H,但不是它的输出少和一个随机的I。那是什么
#include <iostream>
using namespace std;
const int arrayElements = 40;
int main()
{
int lineInputs = 0;
cin >> lineInputs;
char mySexyArray [lineInputs-1][arrayElements-1];
int whatever =0;
for (int i=0;i<lineInputs;i++)
{
// cin >> whatever;
for (int j=0;j<arrayElements;j++)
{
cin >>mySexyArray[i][j];
}
}
for (int i=0;i<lineInputs;i++)
{
for (int j=0;j<arrayElements;j++)
{
cout << mySexyArray[i][j]<<"";
}
cout << endl;
}
return 0;
}
#包括
使用名称空间std;
常数int数组元素=40;
int main()
{
int-lineInputs=0;
cin>>线路输入;
char mySexyArray[lineInputs-1][arrayElements-1];
int=0;
对于(int i=0;i>which;
对于(int j=0;j>mySexyArray[i][j];
}
}
对于(int i=0;i您正在覆盖数组的边界,从而导致未定义的行为
当您有一个行为未定义的程序时,它可以向您显示任何输出
您的数组声明是:
char mySexyArray [lineInputs-1][arrayElements-1];
循环运行时:
for (int i=0;i<lineInputs;i++)
{
for (int j=0;j<arrayElements;j++)
for(int i=0;i当您为lineInputs
输入1
时,lineInputs-1
的值是多少?如何声明char mySexyArray[lineInputs][arrayElements]当lineInputs不是常量时,它应该给出一个error@StackHeapCollision:这是可以理解的,大多数编译器通过扩展支持可变长度数组,并且不是每个人都使用-pedantic
编译这些代码,这是他们理想的选择。您是否考虑过使用std::vector
而不是C样式的数组?这会使您的代码更整洁,更不容易出现逐个错误和缓冲区溢出。