标题:数据结构,线性表,为什么出现核心已转储的错误。请教
只看楼主
卜算子
Rank: 1
等 级:新手上路
帖 子:86
专家分:8
注 册:2016-9-18
结帖率:82.35%
已结贴  问题点数:20 回复次数:3 
数据结构,线性表,为什么出现核心已转储的错误。请教

#include<stdio.h>
#include<malloc.h>
#define OK 1
#define N 10
typedef struct frist
{
    int *data;
}ST;
int Initlist(ST *L)
{
    L->data = (int *)malloc(N*sizeof(int));
    return OK;
}
void creatlist(ST *L,int a[])
{
    int i;
    for( i = 0;i < N;i++)
    {
        L->data[i] = a[i];
    };
    for(i = 0;i < N;i++)
    {
        printf("%2d",L->data[i]);
    }
}
int main(void)
{
    int i,a[N];
    ST *L;
    Initlist(L);
    printf("please input number\n");
    for(i = 0;i < N;i++)
    {
        scanf("%d",&a[i]);
    }
    creatlist(L,a);
}
搜索更多相关主题的帖子: include please number return 线性表 
2017-03-08 19:42
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:10 
非法访问内存,
程序代码:
void creatlist(ST *L,int a[])
{
    int i;
    for( i = 0;i < N;i++)
    {
        *(L->data+i)= a[i];
    };
    for(i = 0;i < N;i++)
    {
        printf("%2d",*(L->data+i));
    }
}

早知做人那么辛苦!  当初不应该下凡
2017-03-08 20:03
卜算子
Rank: 1
等 级:新手上路
帖 子:86
专家分:8
注 册:2016-9-18
得分:0 
回复 2楼 炎天
唔,仍然出现核心已转储的问题,我看了没有越界的情况呀,按照同学你的建议改了还是有错,写个简单的程序來检测一下自己这一段的果然还是出错了,...尴尬

岂曰无衣,与子同袍!
2017-03-08 20:25
烟雨晨曦
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:150
专家分:599
注 册:2017-3-5
得分:10 
int main(void)
{
    int i,a[N];
    ST *L;
    改为ST L;
    后面调用都取地址,你没有为L分配空间,又没有初始化,当L指向不可访问内存时就会这样。
    Initlist(L);
    printf("please input number\n");
    for(i = 0;i < N;i++)
    {
        scanf("%d",&a[i]);
    }
    creatlist(L,a);
}


[此贴子已经被作者于2017-3-8 21:10编辑过]

2017-03-08 21:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-474870-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.576315 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved