【发布时间】:2011-01-06 03:00:45
【问题描述】:
我正在尝试将指向结构数组的指针传递给函数。然后让函数创建自己的结构数组,用数据填充它,然后用新数组覆盖旧数组。
我很确定问题出在我尝试覆盖内存时。我认为我可能使用了错误的方法来覆盖内存(我应该使用内存功能吗?)或者我可能试图覆盖错误的东西。我不太确定我做错了什么。如果有人能指出我正确的方向,我将非常感激;我已经把头发从头上拔了三个小时了。
结构:
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;
}
【问题讨论】:
-
cmd cmds[count] 是一个本地 VLA 数组,不是吗?即使你传递了 cmd **cmdv 和 *cmdv = cmds 也行不通。