2015-06-16 2 views
0

Я пытаюсь сделать простую тестовую функцию, которая работает с 2D-массивами. Целью было бы обработать 2D-массив, увеличить каждое целое число на 1, а затем вернуть 2D-массив.Метод возвращаемого массива 2D в Objective C

Однако у меня есть некоторые проблемы с объявлением метода. Я пробовал это до сих пор:

//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 [] []?

+2

Можете ли вы добавить сообщение об ошибке? –

ответ

0

Ответ немного поздно, но я думал, что я должен опубликовать рабочий ответ:

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

} 

Таким образом, метод, который может принимать 2D-массив (например, целые числа), выглядит так:

int function(int array[][]) 

, который похож на ответ администратора, поскольку в нем есть функция C, только с квадратными скобками.

0

Попробуйте использовать функцию true c вместо obj-c метода. i. е. использовать

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

вместо

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

Это должно решить вашу проблему.

UPDATE

Если вы знаете размер массива во время компиляции вы можете использовать вместо

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

И как я могу изменить массив внутри, например. do board [1] [1] = 7; сбой с потоком один плохой доступ –

+0

@parkgatedev, если есть ошибка с неправильным доступом, это потому, что массив не был выделен, поэтому не забудьте использовать функцию распределения. –

+0

Я понял, что int [] [] и int ** являются разными типами и не могут обрабатывать типы, но мне было интересно, как я могу использовать функцию, которую вы предложили обрабатывать типами int [] []. –