社区
C语言
帖子详情
关于链表函数调用参数问题
simple_Ant
2007-06-14 04:01:54
假如现有链表p,调用函数传入参数时 是传入地址&p,还是直接传p?
编程过程发现有时传入p或&p都行,而有时只能传入&p
望请高手解释下&p与p的区别 传授下经验!3q
...全文
289
12
打赏
收藏
关于链表函数调用参数问题
假如现有链表p,调用函数传入参数时 是传入地址&p,还是直接传p? 编程过程发现有时传入p或&p都行,而有时只能传入&p 望请高手解释下&p与p的区别 传授下经验!3q
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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的拷贝.
Windows内核-系统调用
熟悉Windows三环API到Windows内核的执行流程,清晰的了解调用细节 是在游戏对抗中不可缺少的技术点 自写三环API(让调试器(OD,CE)断点无效) SSDT HOOK(让调试器(OD,CE)无法打开进程) 系统调用: API三环...
C语言复习:关于
链表
的函数
参数
*L,&L.
关于
链表
的函数
参数
1.在
链表
中有时
参数
指针是:*&L2.有时是:指针是*L 1.在
链表
中有时
参数
指针是:*&L ListInsert(LinkNode *&L,int i,ElemType e) InitList(LinkNode *&L) 2.有时是:指针是*L ...
C/C++实现
链表
的函数和调用
//新建
链表
{ Node * p = ( Node * ) malloc ( sizeof ( Node ) ) ; p - > value = num ; p - > next = NULL ; if ( plist - > head ) { Node * last = plist - > head ; for ...
通过子
函数调用
创建
链表
的三种方式
2.在主函数中定义头结点并为头结点开辟空间,此时头结点已经创建好,只需要将头结点指针传给子函数即可,子
函数调用
结束后长长的
链表
自然就被创建好了。 3.只在主函数中定义头结点,但并不开辟空间,此时头结点指针...
c语言中主函数创建
链表
,主函数怎么调用函数(数据结构,创建
链表
)
主函数怎么调用函数(数据结构,创建
链表
)0rnxm44602018.09.29浏览179次分享举报#include#include"stdlib.h"typedefintElemType;typedefstructnode{ElemTypedata;structnode*next;}slink;slink*creslink(intn){slink*...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章