吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 774|回复: 10
收起左侧

[讨论] c语言之单链表插入显示问题【求解】

[复制链接]
Dear_fansheng 发表于 2021-9-28 12:04
代码21行为什么不能用,求大神讲讲啥原理
IMG_20210928_110147.jpg

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

阳光好青年 发表于 2021-9-28 12:39
是不是安全检测?你问题描述的也太少了

如果一开始直接A输入 -1呢,q指向是什么,不可预知了
lichunfeng 发表于 2021-9-28 12:39
p = q啊 ,不是不能用,是21和22是等价的。。。。而且这代码你自己写的? head需要初始化赋值,头节点无data值,你这样能编译通过? 下个断点 观察一下内存数据你就明白了
c03xp 发表于 2021-9-28 13:36
确实是,第一次执行p->next的时候,p还没有分配内存
 楼主| Dear_fansheng 发表于 2021-9-28 14:40
lichunfeng 发表于 2021-9-28 12:39
p = q啊 ,不是不能用,是21和22是等价的。。。。而且这代码你自己写的? head需要初始化赋值,头节点无data ...

我自己写的,能运行
 楼主| Dear_fansheng 发表于 2021-9-28 14:41
c03xp 发表于 2021-9-28 13:36
确实是,第一次执行p->next的时候,p还没有分配内存

假设第一次输入的值不是-1,什么都不输出
 楼主| Dear_fansheng 发表于 2021-9-28 14:42
阳光好青年 发表于 2021-9-28 12:39
是不是安全检测?你问题描述的也太少了

如果一开始直接A输入 -1呢,q指向是什么,不可预知了

输入一些值,最后无输出
c03xp 发表于 2021-9-29 09:26
Dear_fansheng 发表于 2021-9-28 14:41
假设第一次输入的值不是-1,什么都不输出

输入-1也执行不到p->next
第一次执行p->next时p没有分配内存,指向的地址是不可预知的,比如说 *p=0,0是禁止访问的地址,就算*p是正常地址, 因为你不是正常分配的,很可能在程序运行期间被其他正常分配的内存给覆盖
 楼主| Dear_fansheng 发表于 2021-9-29 13:07
c03xp 发表于 2021-9-29 09:26
输入-1也执行不到p->next
第一次执行p->next时p没有分配内存,指向的地址是不可预知的,比如说 *p=0,0 ...

为什么放到循环里就可以了呢
c03xp 发表于 2021-9-29 17:27
Dear_fansheng 发表于 2021-9-29 13:07
为什么放到循环里就可以了呢

给你打个比方吧,有一家旅馆,每来一个客人,就做登记,这样新来的客人不会去已经入住客人的房间。
而你是偷着进来的,没有登记(malloc),虽然你可以暂时居住,一旦有客人来,分配了你的房间,就会冲突;或者你住的是已登记客人的房间,等他回来,也会冲突
还有些房间是不准住的(0号),你偏偏偷住进0号房,会直接冲突
不是说可以运行,你的程序就没有问题,而且这种情况往往调试的时候,提示的出错位置,不是有问题的那句代码
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 22:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表