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、向函数传递大型的类对象。
参考资料来源:百度百科—引用参数
参考资料来源:百度百科—参数传递
能不能问一下,数据结构的逻辑位置是不是从1开始,而物理存储位置是从0开始
追答我有不知道你的SqList具体实现,不过按照常规链表是像你说的这样。
本回答被提问者和网友采纳c++中int InitList(SqList &L)的(SqList &L)是什么意思,为什么要用指 ...
initlist(sqlist*&L)中的*&L是引用。c++中的概念,int a;int &b=a;这就声明了b是a的引用,经过这样的声明后使用a或b的作用相同,都代表同一变量。对变量声明一个引用,并不另开辟内存单元。函数参数传递有两种情况,有一般的将变量名作为参数,这时传递给形参的是变量的值,在执行函数的时候,...
求C语言高手解释形参sqlist *L sqlist &L的区别
这个定义应该是C++里面的引用的定义。因为C里面&只是一个取地址的符号。而且C里面不会在生命的时候去去一个变量的地址 sqlist *L 是声明一个指针 sqlist &L 是声明一个引用 指针与引用的区别在于 (1)引用总是指向一个对象,没有所谓的 null reference .所有当有可能指向一个对象也由可能不指向对象...
线性表删除,怎么修改,初学求指导
L.elem) exit(OVERFLOW);\/\/这个OVERFLOW要先用#define 定义L.length=0;L.listsize=LIST_INIT_SIZE;return OK;\/\/这OKk也要先定义}void Creat_SqList(SqList *L){int i,n; printf("创建一个有序表:\\n"); printf("输入有序表中元素的个数:"); scanf("%d",&n); L->length=n; for(...
用C语言创建一个顺序表并完成插入等操作
char a[],int n) { \/\/建立顺序表int i;for(i = 0;i < n;i++) L->data[i] = a[i];L->length = n;}bool listinsert(sqlist *&L,int i,char e) { \/\/插入数据元素int j;if(i < 1 || i > L->length + 1) return false;i--;for(j = L->length;j > i;j--)...
initlist(sqlist &L)和initlist(sqlist *L)有什么区别?
这两个都是作为函数的形参吧,用起来效果都是一样的,一个是引用,一个是指针,引用是相当于另一个别名,用这个名字代替原来的,指针就是指向实参的那里
C中initlist(sqlist*&L)是什么意思为什么要加*
指针啊
i=InitList(&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);} 输出...
跪求C中initlist(sqlist*&L)是什么意思 *&L是否相当于L
sqlist 是用户自己定义结构体,看你自己的结构体是怎么定义了,还有,creatlist函数也是自己定义的,参数的类型看你个人喜好!要么void creatlist(sqlist *l,elemtyp e[],int n),要么void creatlist(sqlist l,elemtyp e[],int n),当然,如果你的函数返回值是void,那么就必须用前者,即void ...
void InitList(SqList &L) 为什么要加&
void InitList(SqList &L)InitList 函数是初始化链表 前面 的& 是说 参说 L 是以 引用方式调用 初始化链表当然需要对参数做修改 应该使用引用或者指针形式的参数,引用形式的参数更加安全 引用形式的参数只有c++ 才可以 如果是在c程序里就要使用指针形式的参数 void InitList(SqList *L)...
数据结构顺序表中SqList &L 中为什么要用&
赋值),当函数返回时,myL并没有被初始化,因为形参L不能反向传给实参。而加上引用&(在C语言中叫带地址传递)就不一样了,形参L变成实参myL的别名,实参和形参实际是同一段内存空间,当然修改形参就是修改实参 int main(){ SqList myL;\/\/实参 InitList_Sq(myL);...} ...