视觉基本C++错误。运行时检查失败 #2 - 变量周围的堆栈'matrix'已损坏
visual Basic C++ error. Run-Time Check Failure #2 - Stack around the variable 'matrix' was corrupted
我刚刚开始制作一个矩阵计算器,我很沮丧这么早就遇到了问题。我正在制作一个3x3矩阵计算器,并且在向数组输入值时遇到问题,据我所知,它运行良好,直到"cin Matrix[2][2]";当我得到一个错误"运行时检查失败#2 -围绕变量' Matrix '的堆栈被损坏"。我的猜测是我正在进入数组之外,所以它是未定义的,但我看不到我是如何,感谢任何帮助。
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
double matrix[2][2];
for(int i=0;i<=2;i++)
{
for(int j=0;j<=2;j++)
{
cout<<"Enter value: ["<<i+1<<"]["<<j+1<<"] of your 3x3 vector.n";
cin>>matrix[i][j];
}
}
cout<<matrix[1][2];
cin.get();
return 0;
}
在c++中(实际上在许多编程语言中)数组的索引从0开始。但是当你指定大小时,你不会从0开始计数。所以应该是-
double matrix[3][3];
如果一个数组有N个元素,那么有效的索引范围是[0, N-1]
,所以在你的情况下,当N等于2时,有效的索引范围将是[0,1]。
如果你想要一个3 × 3的二维数组那么元素的个数N必须等于3并且有效的下标范围是[0,2]
在C/c++中通常在循环中使用以下条件
for ( int i = 0; i < N; i++ )
在使用范围时不会犯一些错误,尽量使用符号名称来表示数组的大小。例如
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
const int N = 3;
double matrix[N][N];
for ( int i = 0; i < N; i++ )
{
for ( int j = 0; j < N; j++ )
{
cout< << "Enter value: [" << i+1 << "][" << j+1 << "] of your "
<< N << 'x' << N << " vector.n";
cin>>matrix[i][j];
}
}
cout << matrix[1][2];
cin.get();
return 0;
}
相关文章:
- 变量周围的堆栈'...'已损坏
- 运行时检查失败 #2 变量"A"周围的堆栈已损坏
- 运行时检查失败 #2 - 变量"e"周围的堆栈已损坏。发生
- 变量周围的堆栈'sortArray'已损坏
- 变量周围的堆栈'folderPath'已损坏
- 运行时检查失败 #2 - 变量周围的堆栈'...'已损坏
- 运行时检查失败 #2 - 变量"l1"周围的堆栈已损坏
- C++:此代码可以编译,但引发运行时检查失败 #2 - 围绕变量周围的堆栈'num'已损坏。发生
- 数组变量周围的堆栈已损坏
- 运行时检查失败 - 变量周围的堆栈已损坏
- 调试:运行时检查失败 #2 - 变量"LoggerThread"周围的堆栈已损坏
- 运行时检查失败 #2 - 变量周围的堆栈'k'已损坏
- 运行时检查失败 #2 - 变量"数字选择"周围的堆栈已损坏
- 数组问题:变量周围的堆栈'arr'已损坏
- 运行时间检查:变量周围的堆栈已损坏
- 变量周围的堆栈'Yarray'已损坏
- 变量"name"周围的堆栈已损坏C++
- 堆栈周围变量已损坏
- 堆栈周围变量损坏.为什么会这样呢?
- 堆栈周围变量已损坏错误