社区
C语言
帖子详情
关于链表函数调用参数问题
simple_Ant
2007-06-14 04:01:54
假如现有链表p,调用函数传入参数时 是传入地址&p,还是直接传p?
编程过程发现有时传入p或&p都行,而有时只能传入&p
望请高手解释下&p与p的区别 传授下经验!3q
...全文
295
12
打赏
收藏
关于链表函数调用参数问题
假如现有链表p,调用函数传入参数时 是传入地址&p,还是直接传p? 编程过程发现有时传入p或&p都行,而有时只能传入&p 望请高手解释下&p与p的区别 传授下经验!3q
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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的拷贝.
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.只在主函数中定义头结点,但并不开辟空间,此时头结点指针...
写
链表
时的
问题
——函数
参数
显然会是4,而不是3,因为这里的
参数
传递只是单向传递,用内存来解释就是
函数调用
时为形参分配了一个栈空间,并用实参去初始化形参变量,之后实参与形参便脱离关系,无论函数里怎样改变形参,都不会改变实参的值。...
链表
数据结构的创建和调用(C++)
本文主要总结
链表
的基本编程用法,通过创建一个
链表
和调用
链表
每个节点的数据代码,展示基本的
链表
数据结构用法。 1.1原理讲解
链表
是在物理上可以是非连续的存储空间,由一片片存储区域组成,每个存储区域又被...
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章