虽然写过不少数据结构的东西。但是感觉对于定义的理解还是不够深刻。。有几个问题这里的。LNode是一个节点的结构体定义吧。。那么linklist是什么呢?。后面在创建一个链表时。为什么malloc的东西格式是linklist呢?一个节点的结构体定义不是LNode吗?。随口一问。。。为啥非要用molloc呢。。直接 * LNODE P =S->NEXT.这样的表达是不行的吗。。就像int i = 5;这样感觉对于定义还是理解的不够。跪求指点。
2 回答
已采纳
雪落无痕ol
TA贡献13条经验 获得超2个赞
这里涉及到两个概念:
typedef的作用,从第一张图中可以看到,typedef会将struct LNode{}和struct Node{}* 分别定义为LNode和LinkList,所以可以看出,类型LinkList == LNode*
第二张图中,malloc函数返回值为sizeof(LNode)大小空间所在的首地址,类型为void*,这里因为需要将其作为一个LNode来使用,因此将首地址类型转换为LNode*
对于作者在最后的随口一问,其实要回答明白并不能随口一说,这里涉及到空间分配问题,malloc会向计算机申请一段空间来使用,如若不做申请,那随手申请的指针会变为野指针,使得程序不可控
对于LNode *P = s->next;这句话本身并没有语法错误,但是首先s在这里是个野指针,这样会使得 P也指向了一个未知的空间中,使程序走向编的未知和不可控,而且根据具体的程序需求,这样做也是不合理的
- 2 回答
- 0 关注
- 879 浏览
添加回答
举报
0/150
提交
取消