Eny*_*yra 6 c pointers objective-c multidimensional-array
我试图传递一个二维数组,其大小可以是动态的,作为方法参数.
在方法中,我想使用具有通用数组语法的数组.
int item = array[row][column];
Run Code Online (Sandbox Code Playgroud)
要传递数组是不可能的,所以我想要使用指针指针.
- (void)doSomethingWithArray:(int **)array columns:(int)nColumns rows:(int)nRows
{
int item = array[n][m];
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将数组作为参数传递时,我遇到了问题
int array[numberOfRows][numberOfColumns];
[someObject doSomethingWithArray:array columns:numberOfColumns rows:numberOfRows];
Run Code Online (Sandbox Code Playgroud)
我发现了很多提示和技巧,但不知怎的,我想用它的方式并没有真正起作用.
感谢您的帮助,恩伊
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);
}
Run Code Online (Sandbox Code Playgroud)
您可以看到在ideone上运行的代码.
- (void)doSomethingWithArray:(void *)array columns:(int)nColumns rows:(int)nRows {}
...
[someObject doSomethingWithArray:&array columns:numberOfColumns rows:numberOfRows];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2620 次 |
最近记录: |