在函数中引用链表作为参数为什么不行

#include<stdio.h>#include<conio.h>typedefstructlinklist{charc;structlinklist*next;}*l... #include<stdio.h>
#include<conio.h>

typedef struct linklist
{
char c;
struct linklist *next;
}*lnode,*linklist;

void print( linklist l)
{
lnode temp1;
temp1=l;
lnode temp2;
while( temp1->c != '#' )
{
printf("%c->",temp1->c);
temp1=temp1->next;
}
getch();
}

void changel(linklist L) //这样没错 如果改成 void print( linklist &L ) 就错了
{
L=L->next;
}
int main()
{
linklist l;
l=(lnode)malloc(sizeof(lnode));
lnode temp1;
temp1=l;
lnode temp2;
while(1)
{

char ch;
ch = getchar();
temp1->c = ch;
if(ch == '#' )break;
temp2 = (lnode)malloc(sizeof(lnode));

temp1->next =temp2;
temp1 = temp2;

}

print(l);
printf("\n");

changel(l);
print(l);
}
展开
 我来答
gcc2012
2011-04-13 · TA获得超过245个赞
知道小有建树答主
回答量:128
采纳率:0%
帮助的人:94.8万
展开全部
void print( linklist &L )
你这样是什么意思呢,如果你想传地址过去的话,函数定义的时候也应该是void print( linklist *L ),只有在函数调用的时候才用 print( &L ) 这种形式。
再说linklist本身就是指针类型的了,所以,不需要加*,这个函数还可以这样写
void print( struct linklist *L ),调用的时候还是一样
楼上的方法纯属扯淡
百度网友ea1c09c
2011-04-13 · TA获得超过1005个赞
知道小有建树答主
回答量:856
采纳率:0%
帮助的人:1325万
展开全部
你的linklist 本身是个指针类型,如果传参时加上&,则传过去的应该是linklist指针所指向的内存
而不是inklist 指针本身,改成这样试试
void changel(linklist &L)
{
L=L.next;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式