C 中是否有类似于 C# 的 out/out 关键字的东西?
Is there something in C that is analogous to out/out keyword of C#?
void extract_left_subtree(node *right_child)
{
while(right_child->right)
{
right_child = right_child->right;
}
printf("rightmost inside the funtion is %d\n",right_child->data);
}
在此函数中,最后一行打印了正确的值。
node *right_child=root;
extract_left_subtree(right_child);
printf("rightmost child is %d\n",right_child->data);
但是我得到了一些垃圾值。
我知道问题出在哪里,我知道为什么会这样,唯一不知道的是如何解决这个问题?
C#中有ref、out等关键字可以实现同样的功能,但问题是,我们如何在C语言中实现同样的功能呢?
我不想return方法中的值
I don't want to return values from the method please
如果您不想return一个值,您可以这样做:
void extract_left_subtree(node **right_child)
{
while((*right_child)->right)
{
(*right_child) = (*right_child)->right;
}
printf("rightmost inside the funtion is %d\n", (*right_child)->data);
}
并这样称呼它:
extract_left_subtree(&right_child);
这会将right_child
的地址传递给函数,然后函数可以直接更新right_child
的值
void extract_left_subtree(node *right_child)
{
while(right_child->right)
{
right_child = right_child->right;
}
printf("rightmost inside the funtion is %d\n",right_child->data);
}
在此函数中,最后一行打印了正确的值。
node *right_child=root;
extract_left_subtree(right_child);
printf("rightmost child is %d\n",right_child->data);
但是我得到了一些垃圾值。
我知道问题出在哪里,我知道为什么会这样,唯一不知道的是如何解决这个问题? C#中有ref、out等关键字可以实现同样的功能,但问题是,我们如何在C语言中实现同样的功能呢?
我不想return方法中的值
I don't want to return values from the method please
如果您不想return一个值,您可以这样做:
void extract_left_subtree(node **right_child)
{
while((*right_child)->right)
{
(*right_child) = (*right_child)->right;
}
printf("rightmost inside the funtion is %d\n", (*right_child)->data);
}
并这样称呼它:
extract_left_subtree(&right_child);
这会将right_child
的地址传递给函数,然后函数可以直接更新right_child