在数据结构中,int InitList(SqList &L)中的&全部不用,即不用引用,也都可以通过VC,怎么回事啊?

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include<iostre... #include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<iostream.h>
#define LIST_INIT_SIZE 10
#define OK 1
//#define ERROR 0
typedef int ElemType;

typedef struct
{
int *elem;
int length;
int listsize;
}SqList;

int InitList(SqList L)
{
L.elem=(int *)malloc(LIST_INIT_SIZE *sizeof(int));
if (!L.elem) return(0);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return(1);
} //end of InitList_Sq() function
int input(SqList L)
{ int i;
cout<<"请输入待输入的数字个数:";
cin>>L.length;
cout<<"请输入数字";
cout<<endl;
for(i=0;i<L.length;i++)
cin>>L.elem[i];
return OK;
}
int output(SqList L)
{
int i;
for(i=0;i<L.length;i++)
cout<<L.elem[i]<<" ";
return OK;
};
void main()
{
int j,k;
SqList L1;
InitList(L1);
input(L1);
output(L1);
cout<<"\n";
}
这个程序,那就相当于用结构体的名字传递了,可是只有数组的名字才能做首地址传递啊?
其实&是作为引用来处理的,即每次调用函数都是对原结构体进行操作。如果不使用&那么L1永远都没有被操作过,在input中会报错,对一个局部变量L进行赋值时,该内存不可写。
展开
 我来答
東風千里
2011-12-05 · 超过11用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:23.8万
展开全部
int InitList(SqList &L)
&表示引用,而c语言中没有引用,那个是c++中的
vc它也识别不了,只是当成warning
对于修改实参值我们都是通过指针来实现的(也可以用函数返回值);
即int InitList(SqList *L)
你那个是将结构体作为实参传进去的,而不是这个结构体的地址
kaixingui2012
2011-12-11 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6491万
展开全部
C++支持引用 &参数 这种方式实际上是将形参与实参看作是同一个变量(即使你把实参与形参的名设置成不同的名称)来操作,比传地址操作确实方便很多!
但是,C不支持这种方式!
来自:求助得到的回答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不宜然EG
2011-12-05 · TA获得超过102个赞
知道答主
回答量:236
采纳率:0%
帮助的人:131万
展开全部
当然可以通过,也许这样会更清楚:
void Func(int nX)
{
nX = 1000;
}
int a = 100;
Func(a);
a还是等于100;
//------------------
void Func(int &nX)
{
nX = 1000;
}
int a = 100;
Func(a);
a等于1000;

因为引用相当于一个别名,如果使用引用,函数内使用的还是本身,否则,是一个临时拷贝
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
164zsq
2011-12-05 · TA获得超过467个赞
知道小有建树答主
回答量:486
采纳率:0%
帮助的人:443万
展开全部
引用传递的是地址,速率高,而不用引用,需传递整个对象,速率降低
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式