iphone - C/Objective-c 中的二维数组

标签 iphone objective-c c arrays multidimensional-array

我正在尝试使用常规 c 在我的 objective c 项目中创建一个二维数组,但它无法正常工作。

首先,我在我的 ViewController.h 接口(interface)文件中声明了它...

int selectedItemsInt;

那是我打算使用的二维。接下来我在我的 onload 方法中创建数组...

selectedItemsInt [36] [11] = {{1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},
                              {1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},
                              {1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},
                              {1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},
                              {1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},
                              {1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},
                              {1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},
                              {1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},
                              {1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},
                              {1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},
                              {1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},
                              {1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1,1,1,1}};

这是一个巨大的二维数组,我从中得到了两个错误...

Expected expression &AND& Subscripted value is not an array, pointer, or vector

我会在数组前面放一个 int,但我想在我的代码中进一步访问和编辑数组...

int index = selectedItemsInt [y][row]; //y and row are ints

即使使用该代码,我也会遇到同样的错误...

Subscripted value is not an array, pointer, or vector

感谢任何帮助!

最佳答案

您需要将selectredItemsInt 声明为二维数组:

int selectedItemsInt [36] [11];

然后在 onload 中动态填充它(除非你在声明时知道这些值):

for (int i=0; i<36; ++i) {
  for (int j=0; j<11; ++j) {
    selectedItemsInt[i][j] = ...;
  }
}

如果您在声明时知道这些值,则可以一次性声明和初始化数组:

int selectedItemsInt [36] [11] = {{1,1,1,1,1,1,1,1,1,1,1}, ...};

请注意,这里的第一个维度可能是多余的:如果您提供正确数量的初始化值,您可以这样做:

int selectedItemsInt [] [11] = {{1,1,1,1,1,1,1,1,1,1,1}, ...};

如果同时提供维度和列出值,但列出的值的数量少于声明的维度,则数组末尾将未初始化

关于iphone - C/Objective-c 中的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10397034/

相关文章:

ios - 在 IOS 中将图像数组上传到服务器

c - 为什么是 "Segmentation fault(core dumped)"?

c - 如何从 C 中的二维字符数组中获取字符串?

iphone - MKPinAnnotationView 上的双选触摸

iphone - 使用 NSString 类型的表达式初始化 NSMutableString 的指针不兼容 - 警告

c# - ios webview - 如何在应用程序未运行时检查通知

ios - 当我使用自动布局选择每个单元格的高度(因此它们是动态的)时,它通常可以工作,但有些单元格有点短。为什么是这样?

iphone - 将 NSString 转换为 NSInteger?

objective-c - iOS 在缓存目录中存储文件一段时间

c - 执行栈上的代码