gpt4 book ai didi

c - 传递二维结构数组

转载 作者:太空宇宙 更新时间:2023-11-04 08:23:39 28 4
gpt4 key购买 nike

我在传递二维结构数组时遇到困难。二维数组的大小是动态的(取决于给定的输入参数)。我收到错误:

maze_array.c:76:14: error: incompatible types when assigning to type ‘BlockNode {aka struct BlockNode}’ from type ‘BlockNode * {aka struct BlockNode *}’ Maze[i][j]=myBlockNode;

这是我的代码:

int main(int argc, char *argv[]){   

int MazeWidth=1;
int MazeHeight=1;
int NumOfAvatars=1;
BlockNode* Maze[MazeWidth][MazeHeight];
InitializeArray(Maze[0],MazeWidth,MazeHeight,NumOfAvatars);
return 1;
}

int InitializeArray(BlockNode** Maze,int MazeWidth, int MazeHeight, int NumOfAvatars){

for (int i=0; i<MazeWidth;i++)
{
for (int j=0; j<MazeHeight;j++)
{
//Initialize a BlockNode
printf("HERE1\n");
BlockNode *myBlockNode;
myBlockNode=calloc(1,sizeof(BlockNode));
myBlockNode->North=0;
myBlockNode->South=0;
myBlockNode->East=0;
myBlockNode->West=0;
int myArray[NumOfAvatars];
memset(myArray,0,sizeof(myArray));
memcpy(myBlockNode->AvatarVisited,myArray,sizeof(myArray));

//Place BlockNode in the Maze
Maze[i][j]=myBlockNode;
}
}
/*
printf("North %d\n", Maze[0][0]->North);
printf("AvatarVisted %d\n", Maze[0][0]->AvatarVisited[0]);
*/


return 1;

}

最佳答案

您应该考虑到二维数组不等于指向指针的指针,例如,如果您尝试编译...

int array[10][10];
int** p=array;

...你会得到类似的错误。

如果您想传递一个二维指针数组并像AnArray[i][j] = something那样使用它,您应该将函数声明更改为...

int InitializeArray( BlockNode* Maze[][MazeHeight]
, int MazeWidth
, int MazeHeight
, int NumOfAvatars )

……或者……

int InitializeArray( BlockNode* (*Maze)[MazeHeight]
, int MazeWidth
, int MazeHeight
, int NumOfAvatars )

...并称它为...

InitializeArray( Maze
, MazeWidth
, MazeHeight
, NumOfAvatars );

另请阅读 this .

关于c - 传递二维结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32152026/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com