免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2129 | 回复: 4
打印 上一主题 下一主题

[C] 传值错误? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-16 16:26 |只看该作者 |倒序浏览
代码如下(缩略一部分)

typedef struct LNODE{
Elemtype data;
struct LNODE *next;
}LNode,*Linklist;

写出出错的功能函数

Linklist Findlist(Linklist head,int i)     /* 找到指向第i个节点的指针*/
{
        int j=0;
        Linklist ftemp;
        
        ftemp=head;
        for(j=0;j<i;j++){
                     ftemp=ftemp->next;
                     if(ftemp->next==NULL&&j<i-1){  printf ("number is none");   exit(1);}
                     }
         return ftemp;
}

int Listinsert(Linklist L,int i,Elemtype e)   /*插到第i个节点*/
{
Linklist p=NULL;
Linklist q=NULL;

p=Findlist(L,i-1);/*找到第i-1个节点*/
q=(Linklist)malloc(sizeof(LNode));
if(!q)  return ERROR;
q->next=p->next;
p->next=q;
return OK;
}

int Createlist(Linklist L,int num)    /*num 通过输入开始要建立的节点个数,此函数结合其他函数完成创建链表*/
{
int i=0;
Elemtype e;
Elemtype *pe=&e;

for(i=0;i<num;i++){
         getdata(pe);    /* 通过函数给数据赋值*/
         Listinsert(L,i+1,e)    /*插到第i+1个节点(因为此链表已经建立了头结点);
         }

return OK;
}

问题来了!!!!   编译都可以通过,但是调试的时候,提示core dump,通过GDB,发现当函数运行时,运行到Findlist();假如说第一次,Createlist的i=0,传给Listinser的第二个参数是1,本来在传给Findlist()的时候,应该穿的是0;但是gdb显示当前传的值是808464432!!!!


                     
        



论坛徽章:
0
2 [报告]
发表于 2014-10-16 16:30 |只看该作者
附截图一张

论坛徽章:
0
3 [报告]
发表于 2014-10-16 16:31 |只看该作者

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
4 [报告]
发表于 2014-10-16 17:05 |只看该作者
808464432  即 16进制  30303030,也就是字符串"0000",你有输入“00000000”,估计是给结构赋值的时候写越界了。

论坛徽章:
0
5 [报告]
发表于 2014-10-16 19:36 |只看该作者
回复 4# hellioncu


    哎~赋值的时候用的是getc(),错误频出,然后用了标准I/O,然后自己又学习了GDB,一步一步调试,最终成功!大哥,你厉害~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP