【发布时间】:2016-10-20 02:49:29
【问题描述】:
这是我的代码:
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 的大菜鸟。
【问题讨论】:
-
我想你的意思是
*(space + i) = curr_node; -
@VaughnCato:
*(space + i)最好写成space[i]。
标签: c arrays pointers dynamic-memory-allocation