2012-01-20 6 views
2

Objective-C에서 2 차원 배열을 전달하는 방법을 알 수 없습니다. 나는 내가 뭘 잘못하고 있는지에 대한 도움을 원할거야. 나는 말하는 오류가 점점 계속 :에 대한 유형 충돌Objective-C에서 2 차원 배열을 전달하려면 어떻게해야합니까?

을 '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 

} 

답변

1

는 사실 정확히 C에서 2 차원 배열과 동일합니다 언어.

함수 정의가 좋지만 선언이 잘못되었습니다. 정의에있는대로

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

이어야합니다. 그것은 2 차원 배열이기 때문에

0

, 같은 초기화 할 필요가 당신이 당신의 함수를 호출 할 때

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

문제입니다.

displayGameBoard (gameBoard [3][3]) 

gameBoard [3][3]

작성은 4 열 4 행의 요소를 의미한다. 그렇게하면 NSInterger이됩니다. 그러나 displayGameBoardNSInteger 또는 NSInteger *에 대한 포인터를 필요로합니다. 따라서 컴파일러에서 형식이 일치하지 않아 오류가 발생했습니다.

이 문제를 해결하는 방법은

//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 

} 
입니다
관련 문제