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

发布于 2024-11-06 02:52:02 字数 549 浏览 0 评论 0原文

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

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

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];

,我发现了很多提示&技巧,但不知怎的,没有什么真正能按照我想要的方式使用它。

感谢您的帮助, 埃尼

I'm trying to pass a two-dimensional array, which size can be dynamic, as a method argument.

Within the method I'd like to use the array with the general array syntax.

int item = array[row][column];

To pass the array is not possible, so I thought about to use a pointer pointer.

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

But I get the problem when I try to pass the array as the parameter

int array[numberOfRows][numberOfColumns];

[someObject doSomethingWithArray:array columns:numberOfColumns rows:numberOfRows];

I found a lot of tips & tricks, but somehow nothing really works in the way I would like to use it.

Thanks for help,
Eny

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

居里长安 2024-11-13 02:52:02

Objective-c 是基于 C99 的吗?

如果是,您可以使用“新”语法来直接传递维度信息。

#include <stdio.h>

void foo(int rows, int cols, int arr[rows][cols]) {
  printf("%d, %d\n", 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 上运行的代码

Is objective-c based on C99?

If it is, you can use the "new" syntax that allows you to pass dimension information directly.

#include <stdio.h>

void foo(int rows, int cols, int arr[rows][cols]) {
  printf("%d, %d\n", 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);
}

You can see the code running on ideone.

相权↑美人 2024-11-13 02:52:02
- (void)doSomethingWithArray:(void *)array columns:(int)nColumns rows:(int)nRows {}
...
[someObject doSomethingWithArray:&array columns:numberOfColumns rows:numberOfRows];
- (void)doSomethingWithArray:(void *)array columns:(int)nColumns rows:(int)nRows {}
...
[someObject doSomethingWithArray:&array columns:numberOfColumns rows:numberOfRows];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文