回 帖 发 新 帖 刷新版面

主题:线性表基本操作参数前&符号讨论

最近在学数据结构,在线性表基本操作中,参数前经常会有&符号,如ListInsert(&L,i,e)、ListDelete(&L,i,&e),我想问一下什么时候该加&符号,什么时候又不需要加,如果是引用,请说具体点。

回复列表 (共4个回复)

沙发

类似于指针,但是不完全相同
如果需改变原参数 地址中的值,可以使用引用。
最好参考了下C++语法说明

板凳

是引用,引用是所传变量的别名,代表的是同一块内存,传指针意思是是传指向变量的指针变量,指针和引用作为参数都能改变他们所代表的变量的值,而传变量(非指针)函数返回时不能改变其值,在C++里面,函数参数若不是指针或引用,编译时会生成两个拷贝,都是占内存的(如果是对象,空间损耗可想而知),所以若非必要,最好是使用引用或指针

3 楼

我也遇到过这问题,
是传引用,引用是C++语言的特性,不是C的。所以没学c++可能都会遇到这问题
 ListInsert(&L,i,e)
使用  & 运算符明显是要传地址,目的是改变原先的变量
ListDelete(&L,i,&e),
函数声明可能是这样的:
void ListDelete(List *L,int i,ElemType *e);

所以调用就是这样的:
ListDelete(&L,i,&e);

ListDelete函数的原型的形参,可能是指针 或是,数组
为便于理解也可简单理解为 
加上&是可以修改L的  不加是不可以的  
void union (List &La,List Lb)  Lb就没有加 是因为要用到Lb里面的数据 不修改它 
此函数是将集合La添加到Lb中 两者合并 而La必须要改变 
呵呵 这些只是便于理解。。楼上说的很专业

4 楼

有点错误void union (List &La,List Lb) 是将Lb添加到La中 所以La要有所变动

我来回复

您尚未登录,请登录后再回复。点此登录或注册