2013-09-21 3 views
-1

Я пытаюсь передать многомерный массив в качестве параметра для метода. в этом методе ссылка на массив должна храниться в другой переменной. это все работает, но когда я пытаюсь получить доступ к массиву через мою новую переменную, возникает ошибка.Objective-C: Многомерный массив как параметр

это мой код:

-(void)renderMap:(char[MAP_HEIGHT][MAP_WIDTH])mapData { 
     char* data; 
     data = *mapData; 
     NSLog(@"%c", data[1][1]); // Subscripted value is not an array, pointer, or vector 
} 

ответ

0

Вы можете попробовать это

char (*data)[MAP_WIDTH] = mapData 
NSLog(@"%c", data[1][1]); 
0

Попробуйте обратиться непосредственно через mapData без data = *mapData.

+0

спасибо - я знаю, что это будет работать, но мне нужна ссылка, потому что позже он будет быть частной переменной объекта - которую я использую в других методах – user2803033

+0

Так что просто напишите 'data = mapData'. Если ваши данные карты не будут удалены из памяти, ссылка в 'data' будет по-прежнему действительной и массив будет доступен. – PiotrK

+0

когда я пишу data = mapData есть предупреждение: Несовместимые типы указателей, назначающие 'char' из char (*) [30] – user2803033

-1

mapData не является двумерным массивом, поэтому вы не можете использовать двойные скобки. Вы должны получить доступ к каждому элементу, вычисляя смещение строки каждого элемента:

NSLog(@"%c",data[1*MAP_HEIGHT+1]); 
// Generic way: 
NSLog(@"%c",data[row*MAP_HEIGHT+column]); 
+0

Причина голосования? –

Смежные вопросы