c语言之单链表插入显示问题【求解】
代码21行为什么不能用,求大神讲讲啥原理 是不是安全检测?你问题描述的也太少了如果一开始直接A输入 -1呢,q指向是什么,不可预知了 p = q啊 ,不是不能用,是21和22是等价的。。。。而且这代码你自己写的? head需要初始化赋值,头节点无data值,你这样能编译通过? 下个断点 观察一下内存数据你就明白了 确实是,第一次执行p->next的时候,p还没有分配内存 lichunfeng 发表于 2021-9-28 12:39
p = q啊 ,不是不能用,是21和22是等价的。。。。而且这代码你自己写的? head需要初始化赋值,头节点无data ...
我自己写的,能运行
c03xp 发表于 2021-9-28 13:36
确实是,第一次执行p->next的时候,p还没有分配内存
假设第一次输入的值不是-1,什么都不输出
阳光好青年 发表于 2021-9-28 12:39
是不是安全检测?你问题描述的也太少了
如果一开始直接A输入 -1呢,q指向是什么,不可预知了
输入一些值,最后无输出
Dear_fansheng 发表于 2021-9-28 14:41
假设第一次输入的值不是-1,什么都不输出
输入-1也执行不到p->next
第一次执行p->next时p没有分配内存,指向的地址是不可预知的,比如说 *p=0,0是禁止访问的地址,就算*p是正常地址, 因为你不是正常分配的,很可能在程序运行期间被其他正常分配的内存给覆盖 c03xp 发表于 2021-9-29 09:26
输入-1也执行不到p->next
第一次执行p->next时p没有分配内存,指向的地址是不可预知的,比如说 *p=0,0 ...
为什么放到循环里就可以了呢 Dear_fansheng 发表于 2021-9-29 13:07
为什么放到循环里就可以了呢
给你打个比方吧,有一家旅馆,每来一个客人,就做登记,这样新来的客人不会去已经入住客人的房间。
而你是偷着进来的,没有登记(malloc),虽然你可以暂时居住,一旦有客人来,分配了你的房间,就会冲突;或者你住的是已登记客人的房间,等他回来,也会冲突
还有些房间是不准住的(0号),你偏偏偷住进0号房,会直接冲突
不是说可以运行,你的程序就没有问题,而且这种情况往往调试的时候,提示的出错位置,不是有问题的那句代码
页:
[1]
2