gpt4 book ai didi

c - 左值需要作为赋值的左操作数吗?

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:07 26 4
gpt4 key购买 nike

这是我的代码:

void pwd(Fs_sim *files) {
Node *curr_node = files->curr;
Node **space = NULL;
int i = 0;

while (curr_node->parent != NULL) {
space = realloc(space, sizeof(Node *) * (i + 1));
*space + i = curr_node;
i++;
curr_node = curr_node->parent;
}
if (i == 0)
printf("/\n");
else {
while (i > 0) {
printf("/%s", (*space + i--)->name);
}

printf("\n");
}
free(space);

}

'space' 是指向正在动态分配的数组的指针。当每个节点被迭代时,我想在动态分配的数组中存储一个指向该节点的指针,并计算有多少元素。我收到错误消息:

error: lvalue required as left operand of an assignment

关于'*space + i = curr_node;'行。

我看不出有什么问题。有人可以澄清一下吗?

更新:

我已经更改了代码,它现在可以编译,但是当我运行可执行文件时出现段错误。这是我的代码:

void pwd(Fs_sim *files) {
Node *curr_node = files->curr;
Node **space = NULL;
int i = 0;

while (curr_node->parent != NULL) {
space = realloc(space, sizeof(Node *) * (i + 1));
*(space + i) = curr_node;
i++;
curr_node = curr_node->parent;
}
if (i == 0)
printf("/\n");
else {
while (i >= 0) {
printf("/%s", (*(space + (i-1)))->name);
i--;
}

printf("\n");
}
free(space);

}

还是找不到问题所在。

提前致谢。这里是 C 的大菜鸟。

最佳答案

我认为错误在这里:

while (i >= 0) {
printf("/%s", (*(space + (i-1)))->name);
i--;
}

i 为 0 并且您尝试执行 (*(space + (i-1)))->name); 时会发生什么?

你得到 space + -1!

关于c - 左值需要作为赋值的左操作数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40144578/

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