c++中int InitList(SqList &L)的(SqList &L)是什么意思,为什么要用指针(引用)做参数

2025-04-23 13:15:11
推荐回答(2个)
回答1:

initlist(sqlist*&L)中的*&L是引用。c++中的概念,int a;int &b=a;这就声明了b是a的引用,经过这样的声明后使用a或b的作用相同,都代表同一变量。对变量声明一个引用,并不另开辟内存单元。

函数参数传递有两种情况,有一般的将变量名作为参数,这时传递给形参的是变量的值,在执行函数的时候,形参的值发生的变化并不传递给实参。

传递变量的指针,使形参得到一个变量的地址,这时形参指针变量指向实参变量单元。引进引用后,函数参数的第三种传递方式就是传送变量的别名。

例如:

void initList(SqList *&L) 

L=(SqList *)malloc(sizeof(SqList)); 

L-> length=0; 

SqList *L = NULL;

initList(L);

L->...//进行对L的某些操作,那么你的程序运行良好

扩展资料

在形参表中以符号“&”开始的参数即为引用参数。如果一个形参是引用参数,调用部位将把实参的地址传递给子程序。子程序可以改变传递给引用参数的任何实参,因为子程序操作的是真正的变量,而不是它的副本。

把参数声明成引用,实际上改变了缺省的按值传递参数的传递机制,在按值传递时,函数操纵的是实参的本地拷贝。

引用参数的三种常见用法:

1、需要改变实参的值,比如swap()。参数是引用时,函数接收的是实参的左值而不是值的拷贝。这意味着函数知道实参在内存中的位置,因而能够改变它的值或取它的地址。

2、向主调函数返回额外的结果。

3、向函数传递大型的类对象。

参考资料来源:百度百科—引用参数

参考资料来源:百度百科—参数传递

回答2:

(SqList &L) 就是参数类型为SqList类型的引用;
为什么要用引用,因为用引用传参可以在函数内部更改L的数据,不然传入函数的只是L的一个副本,更改后对原L没有影响。