Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
以下是涉及二进制树上某些转换的代码片段。
在这里,“ pre”在每个函数中均初始化为NULL。但是,当函数输入'if'子句并且root-> left = pre被执行时,被分配的pre不为NULL。它由fixFivPtr(root-> left)函数以某种方式更改。
我的问题是,如何更改它而不将其传递给函数。
提前致谢。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
以下是涉及二进制树上某些转换的代码片段。
void fixPrevPtr(struct node *root)
{
static struct node *pre = NULL;
if (root != NULL)
{
fixPrevPtr(root->left);
root->left = pre;
pre = root;
fixPrevPtr(root->right);
}
}
在这里,“ pre”在每个函数中均初始化为NULL。但是,当函数输入'if'子句并且root-> left = pre被执行时,被分配的pre不为NULL。它由fixFivPtr(root-> left)函数以某种方式更改。
我的问题是,如何更改它而不将其传递给函数。
提前致谢。
最佳答案
pre
是静态的,因此它在每次调用之间保持其值。 fixPrevPtr()
是递归的(自身调用),因此对pre
“ sticks”的任何更改。
关于c - 指针更改值而不将其作为参数传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18160845/
10-13 01:48