2014-09-21 83 views
-2

我试图创建一个函数来为其他游戏初始化一个板子,我认为使用泛型函数会对学习更好,但是我很早就遇到了问题,有人可以告诉我为什么这不工作? 我定义了一个10x10 int数组的othelotype。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 2014-09-21 01:41:42

+0

它是以下的 结构othelotype int cuadrado [10] [10]; } * board2; – 2014-09-21 02:22:36

+1

从变量定义中分离'struct othelotype {...};'通常会更好。另外,当你不需要动态分配时,你可以使用'struct othelotype board',然后将它传递给你的函数'inicializartablero(&booard)'。 – 2014-09-21 07:10:48

回答

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

感谢这正是我的意思,使用游标对我来说是全新的。 – 2014-09-21 23:25:14

2

根据您评论中的代码,othelotype不是10x10数组 - 它是一个结构体。无法使用[]运算符访问结构。你可以用结构做什么来访问他们的成员。在这种情况下,我想你想访问cuadrado成员,然后索引到(因为它实际上是一个数组)。

+0

所以funcion应该收到cuadrado?我的想法是保持模块化,但是我不太熟悉语法 – 2014-09-21 02:59:08

+0

您可以简单地接收'othelotype',然后使用它来访问'cuadrado'。看到我的新答案。 – 2014-09-21 07:03:29

相关问题