C语言问题?

这里的p在第一次循环时就赋值了一个地址,第二次循环时又是怎么做到用一个新的p去开辟一个空间,而不是原来已经赋值地址的p... 这里的p在第一次循环时就赋值了一个地址,第二次循环时又是怎么做到用一个新的p去开辟一个空间,而不是原来已经赋值地址的p 展开
 我来答
自我编程
2021-03-14 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

从截图代码分析,这是一个创建链表的函数,p是用于传递参数的临时变量:

在这段代码中指针变量head是指向链表头节点的指针,p是指向新建节点的指针。

循环是当用户有输入时,就新建一个节点(malloc那句代码)。

p用于指向新建的那个节点地址,目的是用于后面函数传参,只是一个临时存储用的变量,所以每次循环都指向一个新建的地址。

这个函数关键功能就是后面调用的InsertDoc。这个函数你没有贴出来,但从函数名及代码内容可分析出,这个函数的有两个参数分别是1、链表头节点地址(head)。2、需要插入链表的新节点地址(p)。之后这个函数会将新建的节点p连接到链表中(通过对应节点的链表指针赋值)。

PS:另外你贴的代码head初值是NULL,所以头结点的创建和判断也在InsertDoc中实现。

参观西湖
2021-03-14 · 古籍有很多,写出来一起欣赏。
参观西湖
采纳数:919 获赞数:2310

向TA提问 私信TA
展开全部
这个语句,就是一个普通的赋值语句。
每次运行都赋值一次,所以每次都是新申请内存并给p赋值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式