【发布时间】:2018-09-23 20:12:41
【问题描述】:
我是 C 的新手,在使用数组作为结构的一部分时遇到了一些麻烦。我有一个结构定义如下:
typedef struct
{
int row;
int col;
int * puzzle[5][5]
} data;
稍后在一个函数中,我尝试按如下方式使用这个结构:
void foo(int grid[5][5])
{
data *puz = (data *)malloc(sizeof(data));
puz->row = 3;
puz->col = 2;
puz->puzzle = grid; // causes an error
}
最后一条语句产生错误“赋值给具有数组类型的表达式”。我知道这与等号和数组数据结构有关,但我不知道如何解决这个问题。任何帮助是极大的赞赏。谢谢。
【问题讨论】:
-
你应该这样定义你的指针
int (*puzzle)[5][5]。 -
显示对
foo的调用。 -
啊,作为错误的副本关闭。您的代码为 2 错误-您可能想要
ints 的二维数组-int puzzle[5][5],然后使用memcpy(注意大小,sizeof puz->puzzle!) -
@kiranBiradar 没有多大帮助,因为 a) 可能这不是真正的意图,b) 将
int *grid[5]转换为int (*puzzle)[5][5]对于新手来说有点棘手 -
kiran Biradar,已修复,非常感谢!