首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

新手有关问题,指针变量作为参数

2013-10-11 
新手问题,指针变量作为参数void SplitList(Linklist *L,Linklist *la,Linklist *lb){//这里有处理代码,分

新手问题,指针变量作为参数


void SplitList(Linklist *L,Linklist *la,Linklist *lb)
{
//这里有处理代码,分离后la和lb不为空,是两个链表的表头,代码就不贴了,没问题
}
void main()
{
    Linklist *L;//这里L不为空
    Linklist *la=NULL;
    Linklist *lb=NULL;
    SplitList(L,la,lb);
}

这里为什么la和lb执行完分离之后依然为空呢?难道是指传递的原因?
[解决办法]
你的做法是值传递 

实参 la 和 lb 没改变
[解决办法]
SplitList 做了什么?
看起来你是要L指针中输出两个指针,那么你这样做是有问题的,函数看起来应该这样定义:
void SplitList(Linklist *L,Linklist **la,Linklist **lb) 

{     //这里有处理代码,分离后la和lb不为空,是两个链表的表头,代码就不贴了,没问题 } 


[解决办法]
应该将存放指针的单元的地址传给函数,而不是将指针值传给函数
[解决办法]
void SplitList(Linklist *L,Linklist **pla,Linklist **plb)
{
    //将此函数中所有la替换为(*pla),lb替换为(*plb)
    //这里有处理代码,分离后la和lb不为空,是两个链表的表头,代码就不贴了,没问题
}
void main()
{
    Linklist *L;//这里L不为空
    Linklist *la=NULL;
    Linklist *lb=NULL;
    SplitList(L,&la,&lb);
}

热点排行