INITLIST(&L) 中的&L是INITLIST函数的实参,这个实参是某个类型变量L的引用,也可以理解为取地址。INITLIST(&L)是个初始化链表的函数,或者是增加节点或者初始化头结点,必须要传给他链表头的真实地址,而不是一个拷贝,不然所做的操作在离开这个函数的时候就没用了。
所以两者的本质区别主要在于,InitList_Sq(SqList+&L) 通过传递指向指针的指针来修改调用者函数中的变量 L(相当于引用),使 L 指向一个新分配的内存空间;而 InitList(&L) 直接接收 SqList 类型的参数 L 并进行初始化操作,不涉及指针传递。亲,希望以上内容对您有所帮助呢😘 好的呢 亲,Ini...
& 是C++中表示应用的意思. 其实际意义和* 指针相似, 但是比指针安全.一般函数 比如 void InitList(LIST L), 不管 L 多大, 传入参数后, L的改动外部无法接受到,同时函数体访问的L 其实是外部传入的L的副本.& 之后, 函数内访问的就是L自身的对象....
表示会对这个变量进行修改的就加了&,而没加的表示只会读取此变量而不会修改。initList 初始化线性表,那肯定会修改变量,而ListEmpt只是读取此并返回此线性表是否为空,并不会修改原线性表。后面的都同理。
一点说明,是C/C++还是C 如果是C#应该在unsafe下的,是L对像的地址
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 --- 了解别名的用法后,我们就知道...
InitList(L); InsertRear(L;25); InsertFront(L 50); IntaL4]={5 8 12 15 36}; for(inti=0; i<5; i++) if (a[i]%2==0)InsertFront(L a[i]); elselnsertRear(L a[i]); } 该算法被调用执行后 得到的线性表L为: 相关知识点: 试题来源: 解析 数据结构是一门研究非数值计算的程序...
intInitList1(LinkList *L){ *L = (LinkList)malloc(sizeof(Node)); if(!(*L)){return0;} (*L)->next =NULL; return1; } 清空链表L,使L重新变为空链表,子函数调用完后不会改变指针L的值,只会改变指针L所指向的内容(即L->next的值) ...
根据实现函数的不一样,用&L的是取地址操作,用L的表示对结构体直接操作