主题:线性表基本操作参数前&符号讨论
laichi123
[专家分:0] 发布于 2009-11-09 21:27:00
最近在学数据结构,在线性表基本操作中,参数前经常会有&符号,如ListInsert(&L,i,e)、ListDelete(&L,i,&e),我想问一下什么时候该加&符号,什么时候又不需要加,如果是引用,请说具体点。
回复列表 (共4个回复)
沙发
m57091003 [专家分:60] 发布于 2009-11-09 22:19:00
类似于指针,但是不完全相同
如果需改变原参数 地址中的值,可以使用引用。
最好参考了下C++语法说明
板凳
allven [专家分:10] 发布于 2009-11-10 23:05:00
是引用,引用是所传变量的别名,代表的是同一块内存,传指针意思是是传指向变量的指针变量,指针和引用作为参数都能改变他们所代表的变量的值,而传变量(非指针)函数返回时不能改变其值,在C++里面,函数参数若不是指针或引用,编译时会生成两个拷贝,都是占内存的(如果是对象,空间损耗可想而知),所以若非必要,最好是使用引用或指针
3 楼
zhangqiang111 [专家分:0] 发布于 2009-11-29 11:55:00
我也遇到过这问题,
是传引用,引用是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 楼
zhangqiang111 [专家分:0] 发布于 2009-11-29 11:58:00
有点错误void union (List &La,List Lb) 是将Lb添加到La中 所以La要有所变动
我来回复