当使用变量num
时,我在访问第9个索引时遇到堆栈损坏错误,但是当我使用任何其他名称访问时,它会出错。请解释一下这种模糊性。
#include<iostream>
#include<iomanip>
using namespace std;
const int SIZE = 9;
class A
{
private:
int num[SIZE];
int num_2[SIZE];
public:
A()
{
for(int i = 1 ; i <= 9 ; i++)
{
num_2[i] = i;
}
}
};
void main()
{
A obj;
}
答案 0 :(得分:6)
如果SIZE = 9
那么你的循环应该是
for(int i = 0; i < SIZE ; i++)
C ++使用基于0的索引,因此数组的第一个索引是[0]
,最后一个是[SIZE-1]
答案 1 :(得分:1)
问题是i <= 9
num_2[9]
已超出num_2