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);
} 展开
#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);
} 展开
3个回答
展开全部
int create(LinkList *L) //这里要求传一个二维指针,即LinkList *类型
{
return OK;
}
LinkList L; 定义一个L指针
Create(L); //传L的值 , 类型为LinkList ,不是LinkList *类型,故这个是错误的!
create(&L); //传L的地址
{
return OK;
}
LinkList L; 定义一个L指针
Create(L); //传L的值 , 类型为LinkList ,不是LinkList *类型,故这个是错误的!
create(&L); //传L的地址
追问
还有一个Create(),你是不是没看到?
追答
看到了,
在C++里这两种都可以
create( LinkList &L) 这个表示引用 也是传L的地址
与传L地址是相同的
展开全部
看了你的问题,我去写了个程序调试,暂时没发现错误。。我本来以为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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数1对应引用1,函数2对应引用2是没问题的,两种功能是一样的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询