所以我试图让这个程序在结构数组中获取一个结构数组,并为其分配一个 1-9 的随机数
struct multiDim
{
int t[16];
};
struct multi
{
multiDim t[16];
};
multi generate()
{
multi m;
srand(time(NULL));
for (int i = 0;i <= 16; i++)
{
for (int I = 0;I <= 16;I++)
{
int ii = rand();
ii = ii % 10;
if (ii <= 9)
{
m.t[i].t[I] = ii;
}
}
}
return m;
当我尝试使用 Visual Studio 2013 编译它时,当我尝试返回 m 时会导致错误,说明
Unhandled exception at 0x0002609B in ConsoleApplication2.exe: 0xC0000005: Access violation writing location 0x00000007.
我在结构中的数组中的结构中使用数组的原因是为了避免 <std::vector<std::vector<int>>
或其他一些方法。我没有使用任何指针或取消引用运算符,所以我不确定它是如何导致它抛出的。
但是,在另一台运行 pocketcpp 的计算机上,我能够成功编译和执行它,但只删除了 stdafx.h 文件,因为它只适用于 Visual Studio 实例。该编译器未正确执行的任何原因?
最佳答案
16 元素的合法索引是 [0, 15],而不是 [0, 16]。 因此,
for (int i = 0;i <= 16; i++)
应该改写成
for (int i = 0; i < 16; i++)
它也适用于 I
循环。
关于c++ - 在不使用指针的情况下使用结构和数组的访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26479395/