0

我在 xcode 中使用原始数组类型。例子:

int matrix [10][10];

我也在使用一个简单的循环来初始化数组

for(int x=0;x<=10;x++)
  for(int y=0;y<=1;0y++)
     matrix[x][y] = 0;

我在整个代码中以这种方式初始化 sevreal 矩阵。我有时注意到在执行初始化后,以前初始化或更新的数组现在包含垃圾。有没有更简单的方法来初始化这种类型的数组。和/或为什么这似乎会破坏其他数组。

4

5 回答 5

1

您的数组在两个维度上都有 10 个位置,但您的循环最多可达 11 个。

尝试

for(int x = 0; x < 10; x++)
  for(int y = 0; y < 10; y++)
     matrix[x][y] = 0;

注意使用小于比较器而不是小于或等于

于 2013-05-02T14:05:51.203 回答
0

我想您没有为不同的矩阵声明不同的变量,而是错误地覆盖了它们。

于 2013-05-02T14:06:24.917 回答
0

试试看...

matrix=[[NSArray alloc]init];
于 2013-05-02T14:06:53.210 回答
0

int myArray[10][10] = {};

这将创建数组并将所有出现的事件初始化为 0;

于 2013-05-02T18:37:34.547 回答
0

您所看到的最可能的损坏原因(假设您没有犯@Renan 指出的错误)是您期望堆栈指针存在于其范围之外。例如,您不能对return matrix调用者,因为创建它的堆栈帧将消失。

此外,由于您在堆栈上进行分配,因此您需要注意矩阵大小。如果它变得太大,那么你会得到堆栈损坏。如果您没有深度递归,100 个整数通常很好,但请记住堆栈限制

  • OS X 主线程:8MB
  • iOS主线程:1MB
  • 所有辅助线程:512kB

这是整个堆栈(所有帧,而不仅仅是当前帧)。

于 2013-05-02T22:10:36.443 回答