链表中LinkList L与LinkList *L的区别以及(*L).elem,L.elem L-next,(*L)-next的区别
typedef struct Node{ int elem; struct node * next; }node,*LinkList;对于LinkList L: L是指向定义的node结构体的指针,可以用->运算符来访问结构体成员,即L->elem,而(*L)就是个Node型的结构体了,可以用点运算符访问该结构体成员,即(*L).elem;对于LinkList *L:L是指向定义的Node结构体指针的指针,所以(*L)是指向Node结构体的指针,可以用->运算符来访问结构体成员,即(*L)->elem,当然,(**L)就是Node型结构体了,所以可以用点运算符来访问结构体成员,即(**L).elem;在链表操作中,我们常常要用链表变量作物函数的参数,这时,用LinkList L还是LinkList *L就很值得考虑深究了,一个用不好,函数就会出现逻辑错误,其准则是: 如果函数会改变指针L的值,而你希望函数结束调用后保存L的值,那你就要用LinkList *L,这样,向函数传递的就是指针的地址,结束调用后,自然就可以去改变指针的值; 而如果函数只会修改指针所指向的内容,而不会更改指针的值,那么用LinkList L就行了;下面说个具体实例吧!#include <stdio.h> #include <stdlib.h>typedef int ElemType; typedef struct Node{ElemType elem;struct Node * next; }Node, * LinkList;//初始化链表,函数调用完毕后,L会指向一个空的链表,即会改变指针的值,所以要用*L void InitList(LinkList *L) {*L = (LinkList)malloc(sizeof(Node));(*L)->next = NULL; }//清空链表L,使L重新变为空链表,函数调用完后不会改变指针L的值,只会改变指针L所指向的内容(即L->next的值) void ClearList(LinkList L) {LinkList p;while(p = L->next)free(p); }//销毁链表L,释放链表L申请的内存,使L的值重新变为NULL,所以会改变L的值,得用*L void DestroyList(LinkList *L) {LinkList p;while(p = (*L)->next )free(p);free(*L);*L = NULL; }void main() {LinkList L = NULL;InitList(&L);ClearList(L);DestroyList(&L); }
链表中LinkList L与LinkList *L的区别以及(*L).elem,L.elem L-next,(*L)-next的区别相关推荐
- 链表中的LinkList L、LinkList *L
对于LinkList L: L是指向定义的node结构体的指针,可以用->运算符来访问结构体成员,即L->elem,而(*L)就是个Node型的结构体了,可以用点运算符访问该结构体成员,即 ...
- 创建链表小细节(引用传递和值传递以及链表中的LinkList L、LinkList *L、LinkList L)
函数参数传递的两种方式为值传递和引用传递 目录 函数参数传递的两种方式为值传递和引用传递 1.传值方式传参 2.引用方式传参 3.通过一段代码运行进一步理解传指针(包括二级指针)和传指针的引用 4.总 ...
- 单链表创建的LinkList L与LinkList *L区分的问题
在学习线性表的存储结构中,很多人在学习线性表的链式存储结构即单链表时,有人会注意函数传参LinkList L与LinkList *L的问题,如下 下面展示一些 内联代码片. #include<s ...
- 取消对 null 指针“l”的引用。_彻底理解链表中为何使用二级指针或者一级指针的引用...
在用c/c++写数据结构程序时,链表和二叉树中经常需要用到二级指针或者一级指针的引用,那么什么时候用什么时候不用呢? 先看一个简单的c++链表操作程序: [cpp] view plaincopy/* ...
- LinkList *L和 LinkList *L和LinkList *L
结论 LinkList *L和 LinkList *&L 引用L是为了改变L的值,而L指向的是链表的头结点的地址,即要改变头结点的地址,但是一般改链都是对头结点之后的结点进行操作,所以头结点的 ...
- LinkList *L , LinkList L, LinkList *L 和 LinkList *L区别及用法
参数传递实际上是值传递,当指针作为函数参数传递时,传递的实际上时指针索指向的地址 typedef struct Node {ElemType data;//定义数据data为ElemType型,此处不 ...
- LinkList L与LinkList *L Lnode与*LinkList的区别
typedef struct node {int data;struct node* next; }Lnode,*LinkList; 对于结构体前面加typedef是给结构体起了个别名, struct ...
- 有一个顺序表L,其元素为整形数据,设计一个算法,将L中的所有小于表头元素的整数放在前半部分,大于表头元素的整数放在后半部分
题目 有一个顺序表L,其元素为整形数据,设计一个算法,将L中的所有小于表头元素的整数放在前半部分,大于表头元素的整数放在后半部分 解答(天勤) /*************************** ...
- 关于指针和链表中的一些问题
学习数据结构时对指针和链表很迷糊,也就自己总结 一下,如果有错误或者理解上的错误欢迎指正,谢谢 指针 指针是什么,指针就是指针类型,就和int 类型,float类型等一样,而对于指针个人当时学习的时候 ...
最新文章
- leetcode 41. First Missing Positive
- android开发 权限大全
- 三星i9018root方法
- iPhone的UDID与push中使用的device token的关系
- PHP、C#、通用的DES加密
- 云米冰箱能控制扫地机器人_既能解放劳动力又能提升家庭幸福指数的小家电,云米互联网扫地机Pro开箱!...
- 从底层分析c和类c语言
- Entity Framework Core 3.1 和 Entity Framework 6.4 发布
- Matlab使用过程中内存不足问题的总结(修改)
- php curl 和 socket,PHP HTTP操作类 , 支持 Curl 和 Socket
- 对‘pthread_create’未定义的引用_全球两大引文数据库,都在悄悄少算引用次数...
- 计算机PS考试都考哪些,计算机专业ps考试题(考查课)(10页)-原创力文档
- PySimpleGUI经典实践之:这个汉字怎么读?
- 节假日判断工具(Java)
- 4-3. 统计素数并求和(20)
- 字符串之间的大小比较方法
- linux下批量创建文件(空文件、带内容文件)、文件夹
- HTML5篮球弹跳运动规律,篮球体能训练的七大原则
- ssh连接服务器FTP传不了文件,ssh连接服务器FTP传不了文件
- 购买价格与商品价格和SKU价格的关系