往往我们在编写主函数时,通常会调用一些函数更方便。而有的时候函数传参是个大问题,因为调用的函数运行完后并没有改变主函数相应的值。
在链表中这个问题更突出,比如在外部函数中改变了链表的结构后 在主函数中的链表结构并没有改变,这就说明函数传参不对。下面是我总结的3种方法,希望大家多给点意见:
1.函数传参时要传地址才行,如果是指针,就在指针前再加一个*,表示指针的地址;
例:
type struct *Linklist;
void CreateListTail(LinkList *L, int n) //l为指针的指针
{
LinkList p,r;
int i;
srand(time(0));
*L = (LinkList)malloc(sizeof(Node)); //注意这里要加*号
r=*L;
for (i=0; i < n; i++)
{
p = (Node *)malloc(sizeof(Node));
p->data = rand()%100+1;
r->next=p;
r = p;
}
r->next = NULL;
}
另外在主函数中实参前要加&来取址。
2.用引用&,在函数形参数前加引用符号。
在主函数中不用加取址
3.还有种方法是利用函数的返回值。比如链表就要返回一个链表头,但是这种方法有个缺点,就是不能返回多个参数。