如何在Objective-C中传递二维数组?

时间:2012-01-20 03:37:23

标签: objective-c arrays

我无法弄清楚如何在Objective-C中传递我的二维数组。我会对我做错的事情有所帮助。我一直在说错误:

  

'displayGameBoard'的冲突类型

这是我的代码:

//protype  
void displayGameBoard (NSInteger)

//int main function
 NSInteger gameBoard [3][3] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; // declaring 
 // caller     
  displayGameBoard (gameBoard [3][3])


// function receiving data from array
void displayGameBoard (NSInteger gameBoard [3][3])
{
   // rest of my code 

}

3 个答案:

答案 0 :(得分:1)

实际上它与C语言中的二维数组完全相同。

您的函数定义很好,但声明不正确。它应该是

void displayGameBoard (NSInteger[3][3]);

就像它在定义中一样。

答案 1 :(得分:1)

问题在于你打电话给你的功能。写

displayGameBoard (gameBoard [3][3])

gameBoard [3][3]表示第4列第4行的元素。当你这样做时得到一个NSInterger。但是displayGameBoard需要指向NSIntegerNSInteger *的指针。因此编译器看到类型不匹配并导致错误。

纠正这个问题的方法是

//protype  
void displayGameBoard (NSInteger[3][3]) // Must have the same argument type in your pro to type as the implementation.

//int main function
NSInteger gameBoard [3][3] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; // declaring 
// caller     
displayGameBoard (gameBoard) // Place in the entire array not just an element


// function receiving data from array
void displayGameBoard (NSInteger gameBoard [3][3])
{
    // rest of my code 

}

答案 2 :(得分:0)

由于它是一个二维数组,因此应该初始化为:

NSInteger gameBoard [3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};