我是新手,请高手帮我看看第八行为什么不能改成 void creast(Lnode L)呀??谢谢了!

[复制链接]
查看11 | 回复3 | 2011-3-22 23:56:04 | 显示全部楼层 |阅读模式
#include
#include
typedef struct node
{
int data;
struct node *next;
}*Lnode;
void creatlist(Lnode &L) //......第八行
{ Lnode q,p;

int n;
int i;

p=(Lnode)malloc(sizeof(struct node));

L=p;



printf("请输入链表的长度:");

scanf("%d",&n);

for(i=1;idata));
p->next=q;
p=q;
}
p->next=NULL;
}
int main()
{
Lnode AAA;
creatlist(AAA);
return 0;
}

回复

使用道具 举报

千问 | 2011-3-22 23:56:04 | 显示全部楼层
*Lnode是指针,所以不能改为那样
回复

使用道具 举报

千问 | 2011-3-22 23:56:04 | 显示全部楼层
不可以。&是引用。这是c++里的,不是c的内容。比如说你是个变量,你在主函数里叫AAA,到了函数里就叫L了,就是你在不同地方有两个名字(传递的是地址),这两个名字代表的都是你,改变L就改变了AAA。但是如果你去掉&,情况就不一样了,函数里的L只是你的克隆(传递的是值),对L的操作对AAA是没影响的。
回复

使用道具 举报

千问 | 2011-3-22 23:56:04 | 显示全部楼层
如果你不用引用的话(即&)那么creatlist这个函数对L的改变将带不出去,即L在creatlist函数体中是改变了的,但是对于主函数中的L仍是没有变的~~就像在c语言中,不是为了将调用函数后的改变值带回主函数不是用指针吗!这是一样的道理!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行