C 在不同级别的函数中传递参数

C 在不同级别的函数中传递参数,c,parameters,out,C,Parameters,Out,我有链接列表c程序,该程序运行正常,但后期的要求是不必使用全局变量。所以我不得不重新设计所有的东西,以避免传递参数,但是有些部分很难重新设计,一些函数正在调用函数和另一个函数,一个示例显示在屏幕上 int main() { display(&head, &tail); } void display(myrec **head, myrec **tail) { sort(&*head, &*tail) then sor

我有链接列表c程序,该程序运行正常,但后期的要求是不必使用全局变量。所以我不得不重新设计所有的东西,以避免传递参数,但是有些部分很难重新设计,一些函数正在调用函数和另一个函数,一个示例显示在屏幕上

int main() {
        display(&head, &tail);
}

void display(myrec **head, myrec **tail) {
        sort(&*head, &*tail)
        then sort again call function swap
}
我的问题是如何多次正确传递参数。使用sort(&*head,&*tail)时,程序工作不正常,没有语法错误,但现在数据中缺少条目。我试图对display函数中的所有内容进行编码,只是为了检查,它确实这样做了,所以我猜我在传递变量时做错了什么。谢谢


它不是递归的,head和tail是保存链接列表状态的变量,因此在swap中,它是更改的,我还需要将更改反映到根调用方,程序的其他部分需要head和tail的新状态。

将输出参数重新传递给另一个函数是一次又一次地添加“&”。 退出显示将使head和tail变量反映对其他功能所做的更改。不确定这是否是最好的方法,但它正在发挥作用


&*x=x
;这是多余的。请创建一个否定投票的原因是什么?您如何定义
排序
和*E
等同于
E
(N1256.5.3.2地址和间接运算符脚注87),因此,您可以使用
head
tail
而不是
&*head
&*tail
&*E
相当于
E
(N1256 6.5.3.2地址和间接运算符脚注87),因此您可以使用
head
tail
而不是
&*head
&*tail
display(&head, &tail);

void display(myrec **head, myrec **tail) {
sort(&*head, &*tail)
}

void sort(myrec **head, myrec **tail) {
swap(&*head, &*tail)
}