2014-09-21 3 views
-2

Я пытаюсь создать функцию для инициализации платы для игры othelo, я думал, что использование общих функций было бы лучше для обучения, но я столкнулся с проблемами очень рано, может кто-то сказать мне, почему это не работает? Я определяю othelotype, который является массивом 10x10 int.C: индексированное значение не является ни массивом, ни указателем

othelotype* inicializartablero (othelotype* board) 
{ 
    int x, y; 

    for (x = 0; x < 8; x++) 
    for (y = 0; y < 8; y++) 
     board[x][y] = 2; 


    board[4][5] = board[5][4] = 0; 
    board[4][4] = board[5][5] = 1; 

} 
+3

Можете ли вы показать нам определение 'othelotype'? – arshajii

+0

: struct othelotype { int cuadrado [10] [10]; } * панель2; –

+1

Часто лучше отделить «struct othelotype {...};» от определения переменной. Также, когда вам не требуется динамическое распределение, вы можете использовать 'struct othelotype board', а затем передать его вашей функции' inicializartablero (& booard) '. –

ответ

1

Вы можете продолжать использовать othelotype *board в качестве вашего параметра, вы просто должны получить доступ к фактической массив внутри него с помощью board->cuadrado:

othelotype* inicializartablero (othelotype* board) 
{ 
    int x, y; 

    for (x = 0; x < 8; x++) 
    for (y = 0; y < 8; y++) 
     board->cuadrado[x][y] = 2; 


    board->cuadrado[4][5] = board->cuadrado[5][4] = 0; 
    board->cuadrado[4][4] = board->cuadrado[5][5] = 1; 

} 
+0

Спасибо, что я имел в виду, использование курсоров совершенно для меня совершенно. –

2

В соответствии с кодом в своем комментарии, othelotype не массив 10х10 - это структура. Невозможно получить доступ к структурам с помощью оператора []. То, что вы можете делать с structs, - это доступ к своим членам. В этом случае я предполагаю, что вы хотите получить доступ к члену cuadrado, а затем проиндексировать его (так как это фактически массив).

+0

Значит, funcion должен получать cuadrado? моя идея состояла в том, чтобы сохранить модульность или так, но я не очень хорошо знаком с синтаксисом. –

+0

Вы можете просто получить 'othelotype', а затем использовать его для доступа к' cuadrado'. См. Мой новый ответ. –

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

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