数据结构中函数参数的一些问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 06:26:52
在数据结构中经常看见类似这样的函数的定义
ListInsert(Sqlist *&L,int i,ElemType e)
Listlength(Sqlist *L)
等,这里的*&L,*L是什么意思,如果*是引用,那么是*&L是否可以理解为L的意思,还有*L又是什么意思,帮帮忙
如果*是引用,那么是*&L是否可以理解为L的意思,那么Sqlist *&L可以定义为Sqlist L吗

*&L 不是 L。
请注意这是在函数声明中,而非在函数体。*&L 运算符从右向左结合,表示基类型为Sqlist的一个指向引用的指针——L。

*L 表示基类型为Sqlist的指针L。

补充:

在明白我上述的回答之前,有必要弄清楚以下几个问题:
(1)&L是什么?
<<在函数声明中(以下问题也以这个为前提),&符号表示的是引用。

(2)*L是什么?
<<是指针。

(3)*&L是什么?
<<运算符由右向左结合,意味着L先与&结合,然后所得的结果再与*结合。
这样一来,你就不难理解“表示基类型为Sqlist的一个指向引用的指针——L。”这句话的含义了。

如果还是不明白,只能说明你对引用和指针的概念以及语法理解不够,这就只有多看几遍书了。

楼上说的没错

ListInsert(Sqlist *&L,int i,ElemType e)
作用其实相当于C里面的
ListInsert(Sqlist **L,int i,ElemType e)
是为了返回Sqlist *