*L 本意是 取L这个指针变量所保存的指针所指向的变量上的内容。{我们以钥匙比作变量的地址,盒子比作变量。&L 表示能打开L这个盒子的钥匙,*L表示打开L的盒子拿到盒子里面的钥匙去打开对应那把钥匙的盒子,把那个盒子里面的数据拿出来}
C语言的特性是函数只传形参(只是把外界传入的参数复制一份,在另一个位置重新声明定义这个参数的复制品,在函数内部的所有操作,均无法影响到函数以外的变量。除非你传递给函数的是一个指针------ 一个你要修改的变量的存放地址/一个指向你要修改的变量的指针)。
根据我的理解,就这张图所没有包含的,那个调用 ListInsert()函数的地方,,,,对应的写法应该是ListInsert(&L,i,e)
---------------这是void类型函数的写法,链表插入删除查找操作还有一种带有返回值的函数写法,那种写法没这么绕口令,比较好理解一点。函数调用L=ListInsert(L,i,e); 函数体 LinkList Insert(LinkList L,int i,ElemType e){ ... return L; }
假设
int main(){ int i =4; ; int*p=&i ; printf("%d---%d******%d",&i,p,*p);//注意看这个输出,你可以多运行几遍程序,通常来说i这个变量的地址会略有改变,但是*p一定是等于i的,不信你可以主动修改第一个赋值语句,令i等于别的数字
}