目标c -如何传递未知大小的二维数组作为方法参数



我试图传递一个二维数组,其大小可以是动态的,作为一个方法参数。

在该方法中,我想使用具有一般数组语法的数组。

int item = array[row][column];

传递数组是不可能的,所以我考虑使用指针指针。

- (void)doSomethingWithArray:(int **)array columns:(int)nColumns rows:(int)nRows
{
   int item = array[n][m];
}

但是当我试图传递数组作为参数

时就会遇到问题
int array[numberOfRows][numberOfColumns];
[someObject doSomethingWithArray:array columns:numberOfColumns rows:numberOfRows];

我发现了很多技巧&但不知何故,没有一件事能真正按我想要的方式工作。

谢谢你的帮助,羡慕

objective-c是基于C99吗?

如果是,您可以使用"new"语法,该语法允许您直接传递维度信息。

#include <stdio.h>
void foo(int rows, int cols, int arr[rows][cols]) {
  printf("%d, %dn", arr[0][0], arr[1][4]);
}
int main(void) {
  int arr[2][12] = {{1, 2, 3, 4, 5}, {11, 12, 13, 14, 15}};
  foo(2, 12, arr);
}

可以看到代码在ideone上运行

- (void)doSomethingWithArray:(void *)array columns:(int)nColumns rows:(int)nRows {}
...
[someObject doSomethingWithArray:&array columns:numberOfColumns rows:numberOfRows];

相关内容

  • 没有找到相关文章

最新更新