gpt4 book ai didi

c - 无法在结构中创建模拟二维动态数组

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:50 25 4
gpt4 key购买 nike

struct Level_Info
{
char **Map;
} Level[Level_Amount];

for (int Cnt_1 = 0; Cnt_1 < Level_Amount; Cnt_1++)
{
Level[Cnt_1].Map = malloc(Rbn_Col * sizeof(char*));
for (int Cnt_2 = 0; Cnt_2 < Rbn_Col; Cnt_2++)
Level[Cnt_1].*(Map+Cnt_2) = malloc(Rbn_Row * sizeof(char)); /* line 10 */
}

GCC 说:第 10 行「*」标记前的预期标识符,那么如何修复它?

最佳答案

替换

Level[Cnt_1].*(Map+Cnt_2) = malloc(Rbn_Row * sizeof(char));

*(Level[Cnt_1].Map+Cnt_2) = malloc(Rbn_Row * sizeof(char));

或简单地用

Level[Cnt_1].Map[Cnt_2] = malloc(Rbn_Row * sizeof(char));

根据定义,sizeof(char) 始终为 1,您也可以这样做

Level[Cnt_1].Map[Cnt_2] = malloc(Rbn_Row);

或者在 Map 指向做什么方面保持灵 active

Level[Cnt_1].Map[Cnt_2] = malloc(Rbn_Row * sizeof(Level[Cnt_1].Map[Cnt_2][0]));

另外请注意,索引数组的首选类型是 size_t,而不是 int

因此您的代码段应如下所示:

struct Level_Info
{
char ** Map;
} Level[Level_Amount];

for (size_t Cnt_1 = 0; Cnt_1 < Level_Amount; ++Cnt_1)
{
Level[Cnt_1].Map = malloc(Rbn_Col * sizeof(Level[Cnt_1].Map[0]));

for (size_t Cnt_2 = 0; Cnt_2 < Rbn_Col; ++Cnt_2)
{
Level[Cnt_1].Map[Cnt_2] = malloc(Rbn_Row * sizeof(Level[Cnt_1].Map[Cnt_2][0]));
}
}

关于c - 无法在结构中创建模拟二维动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24350492/

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