A. C中initlist(sqlist*&L)是什么意思
initlist(sqlist*&L)中的*&L是引用。c++中的概念,inta;int&b=a;这就声明了b是a的引用,经过这样的声明后使用a或b的作用相同,都代表同一变量。对变量声明一个引用,并不另开辟内存单元。
函数参数传递有两种情况,有一般的将变量名作为参数,这时传递给形参的是变量的值,在执行函数的时候,形参的值发生的变化并不传递给实参。
传递变量的指针,使形参得到一个变量的地址,这时形参指针变量指向实参变量单元。引进引用后,函数参数的第三种传递方式就是传送变量的别名。
例如:
voidinitList(SqList*&L)
{
L=(SqList*)malloc(sizeof(SqList));
L->length=0;
}
SqList*L=NULL;
initList(L);
L->...//进行对L的某些操作,那么你的程序运行良好
(1)initlist函数c语言扩展阅读
在形参表中以符号“&”开始的参数即为引用参数。如果一个形参是引用参数,调用部位将把实参的地址传递给子程序。子程序可以改变传递给引用参数的任何侍散实参,因为子程序操作的是真正的变量,而不是它的副本。
把参数声明成引用,实际上改变了缺省的按值传递参数的传递机制,在按值传递时,函数操纵的是实参的本地拷贝。
引用参数的三种常见用法:
1、需要改变实参的值,比如swap()。参数是引用时,函数接收的是实参的左值而不是值的拷贝。这意味着函薯谈迅数知道实参在内存中的位置,因而能够改变它的值或取它的地址。
2、向主调函数返回额外的结果。
3、向函数传递大型的类对象。
B. initlist函数用c语言怎么写
#include<stdio.h>
voidAddNumOne(intnum)
{
num+=5;
}
voidAddNumTwo(int*num)
{
*num+=5;
}
intmain()
{
intnum=0;//这神悉老里和定义链游升表是一样的
AddNumOne(num);
printf("%-5d ",num);
AddNumTwo(&num);
printf("%-5d ",num);
return0;
}
(2)initlist函数c语言扩展阅读
InitList_L()初始化函数
StatusInitList_L(LinkList*L)//初始化线性表
{
*L=(LinkList)malloc(sizeof(Lnode));
if(!(*L))returnERROR;
(*L)->next=NULL;
(*L)->陆庆data=info;
returnOK;
}
C. INITLIST(&L) 中&作用是什么
INITLIST(&L) 中的&L是INITLIST函数的实参,这个实参是某个类型变量L的引用,也可以理解为取地址。INITLIST(&L)是个初始化链表的函数,或者是增加节点或者初始化头结点配毁,必须要传给他链表头的真实地址,而不是一个拷贝,不然所做的操作在离开这个函数的时候就没用了。
(3)initlist函数c语言扩展阅读:
&的使用注意事项:
1、声明引用时,必须同时对其培族备进行初始化,不能让他指向其他变量。
2、引用的声明符放置在变量名的前面,和*操作符的用法一样。
3、引用穗启声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。
4、声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。
5、可以建立数组的引用和指针的引用。
D. C中initlist(sqlist*&L)是什么意思
这语言应该是在C++里才能出现的虚罩芹函差毕数声明吧。
void
initlist(sqlist
&L);意思是说,参数L是sqlist类型,且参数是以别名传参出现的。所谓别名的意思说就是,在这个函数中,函数可以修改L的修。
例如:
void
add10(int
&a)
{
a=a+10;
}
void
main()
{
int
n=10;
add(n);
printf("%d",n);
}
输出:
20
------------------------------
了解别名闷凳的用法后,我们就知道了。void
initlist(sqlist*
&L)的意思是说,参数L是sqlist的指针类型。且在函数中可以修改这个指针L。