关于链表函数调用参数问题

simple_Ant 2007-06-14 04:01:54
假如现有链表p,调用函数传入参数时 是传入地址&p,还是直接传p?

编程过程发现有时传入p或&p都行,而有时只能传入&p

望请高手解释下&p与p的区别 传授下经验!3q
...全文
289 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
simple_Ant 2007-06-18
  • 打赏
  • 举报
回复
迷迷糊糊算明白了点..
chenyu2202863 2007-06-14
  • 打赏
  • 举报
回复
如果实参用的是&开头的,就是传址
如果是形参&开头就是引用

当然,这些只有在C++里才成立~
niujian228 2007-06-14
  • 打赏
  • 举报
回复
传*rear,调用函数后rear的值为z,传rear,调函数后rear还是指向原来的链表.
simple_Ant 2007-06-14
  • 打赏
  • 举报
回复
之前就那样编的,这样输不出链表front,必须是&,好像和front=rear有关吧,是不是传rear就改变了front和rear的联系?
niujian228 2007-06-14
  • 打赏
  • 举报
回复
把put的定义改为
void put(int x,int y,list rear)
{
list z;
z=(list)malloc(sizeof(listnode));
z->a=x;
z->e=y;
rear->link=z;
rear=z;
}
就可以传rear了吧.
niujian228 2007-06-14
  • 打赏
  • 举报
回复
因为你定义void put(int x,int y,list *rear)时,"list *rear"项中形参就是"指向list的指针类型",所以调用它时,该项也应该对应指身list的指针类型.
simple_Ant 2007-06-14
  • 打赏
  • 举报
回复
那偶就发个问题,下面是多项式相加的链表程序,在add函数中front=rear,调用put时传&rear而不可以传rear,为啥子?
void put(int x,int y,list *rear)
{
list z;
z=(list)malloc(sizeof(listnode));
z->a=x;
z->e=y;
(*rear)->link=z;
*rear=z;
}
void add(list p,list q)
{
list rear,front,m,n,temp;
m=p->link;
n=q->link;
int sum;
rear=(list)malloc(sizeof(listnode));
front=rear;
while(m && n)
{
switch(COMPARE(m->e,n->e))
{
case 1:{
put(m->a,m->e,&rear);
m=m->link;
break;}
case 0:{
sum=m->a+n->a;
put(sum,m->e,&rear);
m=m->link;
n=n->link;
break;}
case -1:
{
put(n->a,n->e,&rear);
n=n->link;
break;
}
}
}
for(;m;m=m->link) put(m->a,m->e,&rear);
for(;n;n=n->link) put(n->a,n->e,&rear);
rear->link=NULL;
temp=front;front=front->link;free(temp);//去掉头结点
for(;front;front=front->link)
{
printf("%dx^%d",front->a,front->e);
if(front->link && front->link->a>0)
printf("+");
}
printf("\n");
}
simple_Ant 2007-06-14
  • 打赏
  • 举报
回复
是不是要进行修改时 比如插入删除等传&p 需要整个链表不修改时传p?
bargio_susie 2007-06-14
  • 打赏
  • 举报
回复
你也具体搞个例子出来看出现什么问题了。。。
kf701 2007-06-14
  • 打赏
  • 举报
回复
怎么这么多语法问题呢
simple_Ant 2007-06-14
  • 打赏
  • 举报
回复
额~不懂..可否详细下
lightnut 2007-06-14
  • 打赏
  • 举报
回复
传&p: 修改p本身;
传p: 修改p的拷贝.

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧