【问题标题】:2D Array Returning Method in Objective CObjective C 中的二维数组返回方法
【发布时间】:2015-09-01 16:25:30
【问题描述】:

我正在尝试制作一个适用于二维数组的简单测试函数。目的是处理二维数组,将每个整数加 1,然后返回二维数组。

但是我在方法声明方面遇到了一些问题。到目前为止我已经尝试过了:

//this is the part that does not work
-(int[][])incrementBoard:(int[][])board{

...

}

但是这会产生错误。返回类型应该是 int[][] 类型,并且应该能够处理 int[][] 数组的输入。

我看过this的问题,我还是不知道如何声明这个函数。

提前谢谢你,

编辑

该功能现在可以工作了。但是,当我尝试传递 2D 数组时,它会导致线程 1 错误访问崩溃,并且消息 incompatible pointer types passing int[8][8] to parameter of type int**

如何编辑函数以使其接受 int[][] 类型的数组?

【问题讨论】:

  • 可以添加错误信息吗?

标签: objective-c arrays methods


【解决方案1】:

尝试使用真正的 c 函数而不是 obj- c 方法。 一世。 e.使用

int** incrementBoard(int** board, i, j /*array length*/){}

而不是

-(int **)incrementBoard:(int **)board{}

应该可以解决你的问题。

更新

如果您在编译时知道数组大小,则可以改用

int[8][8] incrementBoard(int[8][8] board){}

【讨论】:

  • 我怎么能改变里面的数组,例如做板[1][1] = 7;线程一错误访问崩溃
  • @parkgatedev 如果出现bad access 错误,那是因为数组没有被分配,所以一定要使用分配函数。
  • 我推断 int[][] 和 int** 是不同的类型,它无法处理类型,但我想知道如何使用您提出的函数来处理 int[] [] 类型。
  • 显示的警告消息是“不兼容的指针类型将 int[8][8] 传递给 int** 类型的参数”我已将数组声明为 int set[8][8];
  • @parkgatedev int set[8][8];增量板(设置,8,8);应该做的伎俩
【解决方案2】:

回复有点晚了,但我想我应该发布有效的答案:

int incrementBoard(int board[][8]){

}

因此,可以采用 2D 数组(例如整数)的方法如下所示:

int function(int array[][])

这类似于管理员的答案,因为它是一个 C 函数,只是带有方括号。

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    相关资源
    最近更新 更多