链表中函数传参的3种方法

往往我们在编写主函数时,通常会调用一些函数更方便。而有的时候函数传参是个大问题,因为调用的函数运行完后并没有改变主函数相应的值。

在链表中这个问题更突出,比如在外部函数中改变了链表的结构后 在主函数中的链表结构并没有改变,这就说明函数传参不对。下面是我总结的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.还有种方法是利用函数的返回值。比如链表就要返回一个链表头,但是这种方法有个缺点,就是不能返回多个参数。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值