Я пытаюсь передать указатель на массив структур для функции. Затем функция создаёт свой собственный массив структур, заполняет его данными и затем перенаправляет старый массив на новый массив.Переопределение массива структур в C
Я уверен, что проблема возникает, когда я пытаюсь перезаписать память. Я думаю, что я мог бы использовать неправильный метод для перезаписывания памяти (должен ли я использовать функции памяти?), Или я могу попытаться перезаписать неправильную вещь. Я не совсем уверен, что я делаю неправильно. Если бы кто-то мог указать мне в правильном направлении, я был бы чрезвычайно благодарен; Я вытаскиваю волосы из головы уже три часа.
Struct:
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, это не сработает. – Nyan