c语言链表的形参传递问题,下面这俩个有什么不同吗?

#include<stdio.h>#include<stdlib.h>#defineOK1typedefstructLNode{intdata;structLNode*n... #include<stdio.h>
#include<stdlib.h>
#define OK 1
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
int Create(LinkList &L){
return OK;
}
int create(LinkList *L){
return OK;
}
void main(){
LinkList L;
Create(L);
create(&L);
}
展开
 我来答
kaixingui2012
2014-04-08 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6458万
展开全部
int create(LinkList *L) //这里要求传一个二维指针,即LinkList *类型
{
return OK;
}

LinkList L; 定义一个L指针
Create(L); //传L的值 , 类型为LinkList ,不是LinkList *类型,故这个是错误的!
create(&L); //传L的地址
追问
还有一个Create(),你是不是没看到?
追答
看到了,
在C++里这两种都可以

create( LinkList &L) 这个表示引用 也是传L的地址
与传L地址是相同的
bzyfoolman
2014-04-08 · TA获得超过406个赞
知道小有建树答主
回答量:895
采纳率:100%
帮助的人:68.5万
展开全部

看了你的问题,我去写了个程序调试,暂时没发现错误。。我本来以为int Create(LinkList &L);Create(L);这样的传值会发生错误。或者数据无法改变。可是我错了……我无法解释。我也要去问问别人。。

#include<stdio.h>
void sum(int *);
void sum1(int &i);

int main(void)
{
int n=10,m=20;
sum(&n);
printf("n此时等于%d\n",n);
    sum1(m);
printf("m此时等于%d\n",m);
return 0;
}

void sum(int * a)
{
printf("n+10=%d\n",*a+10);
}
void sum1(int &i)
{
printf("m+2=%d\n",i+2);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haibao268
2014-04-08 · 超过20用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:31.7万
展开全部
函数1对应引用1,函数2对应引用2是没问题的,两种功能是一样的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式