Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
objective-c中的二维整数数组_Objective C_Arrays - Fatal编程技术网

objective-c中的二维整数数组

objective-c中的二维整数数组,objective-c,arrays,Objective C,Arrays,我正在使用C风格的二维整数数组 这在我的主类文件中很好,我可以通过引用将数组传递给其他类。我在尝试检索指向数组的指针并使用该指针时遇到了问题 我的问题是:有没有比使用C风格的2d数组更好的方法?也许是我不知道的可可课?我注意到了NSMatrix,但它似乎适合于单元格,而不是简单的整数 我到处都有这样的电话:items[x][y],所以一种引用数组位置的速记方法会很好 进一步详情: 我将数组设置为实例变量,并尝试如下访问: -(void) setItems: (int [15][24])items

我正在使用C风格的二维整数数组

这在我的主类文件中很好,我可以通过引用将数组传递给其他类。我在尝试检索指向数组的指针并使用该指针时遇到了问题

我的问题是:有没有比使用C风格的2d数组更好的方法?也许是我不知道的可可课?我注意到了NSMatrix,但它似乎适合于单元格,而不是简单的整数

我到处都有这样的电话:
items[x][y]
,所以一种引用数组位置的速记方法会很好

进一步详情:

我将数组设置为实例变量,并尝试如下访问:

-(void) setItems: (int [15][24])items
{
    (*pitems)[24] = **items;
}

-(int) getItems
{
    return (*pitems)[24];
}

当我尝试使用
getItems
检索时,我收到了关于创建引用而不使用强制转换的编译器警告。

这里有一个有趣的讨论:

基本上,建议将二维数组转换为多个一维数组。例如:

int数组[20][8]变为

int** array = (int*)malloc(20 * sizeof(int*));

unsigned int i = 0;
for (i = 0; i < 20; ++i)
{
    array[i] = (int)malloc(8 * sizeof(int));
}

and your method returns int** and variable is of type int**. 
int**array=(int*)malloc(20*sizeof(int*);
无符号整数i=0;
对于(i=0;i<20;++i)
{
数组[i]=(int)malloc(8*sizeof(int));
}
您的方法返回int**,变量类型为int**。
这样做的优点是,普通二维数组索引可以按预期工作


链接中未建议的另一个选项是使用NSMutableArray类型的NSMutableArray。这将比标准C数组慢,但更容易传递和引用。

这里有一个有趣的讨论:

基本上,建议将二维数组转换为多个一维数组。例如:

int数组[20][8]变为

int** array = (int*)malloc(20 * sizeof(int*));

unsigned int i = 0;
for (i = 0; i < 20; ++i)
{
    array[i] = (int)malloc(8 * sizeof(int));
}

and your method returns int** and variable is of type int**. 
int**array=(int*)malloc(20*sizeof(int*);
无符号整数i=0;
对于(i=0;i<20;++i)
{
数组[i]=(int)malloc(8*sizeof(int));
}
您的方法返回int**,变量类型为int**。
这样做的优点是,普通二维数组索引可以按预期工作


链接中未建议的另一个选项是使用NSMutableArray类型的NSMutableArray。这将比标准C数组慢,但更容易传递和引用。

如果您知道第一个维度的确切大小,则只能传递2D静态数组:

// OK, even though we don't know the size of the second dimension
- (void) doStuff: (int [15][])array { ... }
...
int array[15][24];
[self doStuff:array];

// ERROR: don't know size of first dimension (second dimension is irrelevant)
- (void) doStuff: (int [][])array { ... }

当然,那么您的函数只适用于第一维中的一个特定数组大小。如果直到运行时才知道第一个维度的大小,则必须将数组展平为一维数组,或使用动态分配的指向一维数组的指针数组,如中所示。

如果知道第一个维度的确切大小,则只能传递二维静态数组:

// OK, even though we don't know the size of the second dimension
- (void) doStuff: (int [15][])array { ... }
...
int array[15][24];
[self doStuff:array];

// ERROR: don't know size of first dimension (second dimension is irrelevant)
- (void) doStuff: (int [][])array { ... }

当然,那么您的函数只适用于第一维中的一个特定数组大小。如果直到运行时才知道第一个维度的大小,则必须将数组展平为1D数组,或者使用动态分配的指向1D数组的指针数组,如中所示。

获取指向数组的指针有哪些问题?获取指向数组的指针有哪些问题?谢谢。因此,在本例中,我可以返回**int指针,但接下来我会这样做(将返回的指针指向数组):int items[15][24]=[object getArray]?如果没有,如何访问返回的阵列?谢谢。因此,在本例中,我可以返回**int指针,但接下来我会这样做(将返回的指针指向数组):int items[15][24]=[object getArray]?如果没有,如何访问返回的数组?