我正在尝试使用常规 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/