gpt4 book ai didi

c - 覆盖 C 中的结构数组

转载 作者:行者123 更新时间:2023-11-30 14:29:26 26 4
gpt4 key购买 nike

我正在尝试将指向结构数组的指针传递给函数。然后让该函数创建自己的结构数组,用数据填充它,然后用新数组覆盖旧数组。

我很确定问题是在我尝试覆盖内存时发生的。我认为我可能使用错误的方法来覆盖内存(我应该使用内存函数吗?)或者我可能试图覆盖错误的东西。我不太确定我做错了什么。如果有人能给我指出正确的方向,我将非常感激;我已经把头发从头上拔下来了大约三个小时。

结构:

typedef struct
{
char command;
int argc;
char* argv[];
}cmd;

代码:

int main(int argc, char *argv[])
{
[... irrelevant code]
cmd cmdv[count];
cmd* cmdv_ptr = &cmdv[0];
dissectCmd(cmdstr, cmdv_ptr);
printf("%i", cmdv[0].argc);
return 0;
}

void dissectCmd(char* str, cmd* cmdv)
{
[... irrelevant code]
cmd cmds[count];
int i = 0;
for(i = 0; i < count; i++)
{
cmd next;
next.command = 'u';
next.argc = 100;
cmds[i] = next;
}
cmdv = cmds;
}

最佳答案

您不会覆盖内存 - 语句 cmdv = cmds 只是复制指针(使 cmdv 指向 cmds。)如果您想实际复制内存,则需要 memcpy(cmdv, cmds, count * sizeof(cmd));

关于c - 覆盖 C 中的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4611357/

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