赞
踩
首先说明一下,&其实是C++的知识,其在此处的作用是使函数运行后可以改变实参。
首先,在调用函数时,实参一般不会被改变,如下
输出如下
但有两种方法可以通过函数改变实参
1.使用引用 &
运行结果如下
可以看到成功地改变了实参的值
2.当形参是指向实参的指针时,例如数组
在严蔚敏版教材中,LinkList可以定义指向List的指针
在PTA上刷题过程中,发现其中的函数参数时而是LinkList L,时而是LinkList &L,百度的代码还会有LinkList *L这种写法,本人看到后很是疑惑,因此很多题都过不了,在看过各篇大佬写的博客后本人也有了一些见解。
1.当函数参数为LinkList L时,意味着只改变List的内容,而不需要改变L这个指针
如
Status GetElem(LinkList L,int i,ElemType e)
2.当参数为LinkList &L时,意味着需要改变L这个指针本身
如
- Status InitList(LinkList &L)
-
- {
-
- L=(LinkList)malloc(sizeof(struct LNode)); ......
-
- }
这里想初始化单链表,需要给L分配内存空间,即需要改变L
3.当参数为LinkList *L时,意味着需要改变L这个指针指向的LinkList类型的指针
此时给头结点分配储存空间时要这样写
(*L)=(LinkList)malloc(sizeof(struct LNode));
L前面要加*,表示L所指向的那个指针
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。