勒布朗1997 发表于 2019-5-7 19:18:19

GetElem段错误

#include<stdio.h>
typedef struct
{   int data;
    int length;
    /* data */
}Sqlist;

int GetElem(Sqlist L,int pos,int *e)//i为作为线性表中的序列,数组中是以0为开始,列表以1为开始.
{
    if(pos<1||pos>L.length)
    {
      printf("wrong input");
      return 0;
    }
    *e=L.data; //想要线性表的第N个数据,那么这个数据在数组中为第N-1个。
    return 1;
}
int main()
{
    Sqlist a;
    a.length=4;
    a.data=2;
    a.data=2;
    a.data=2;
    a.data=2;   
    int *e;
    GetElem(a,3,e);
    printf("%d\n",*e);
}

输出:
段错误 (核心已转储)

风扫地 发表于 2019-5-7 19:35:58

指针没有指向可用内存

    int *e; //没有初始化, 指向哪里的?
    GetElem(a,3,e);
    printf("%d\n",*e);

----》
    int e;
    GetElem(a,3,&e);
    printf("%d\n",e);

或者:
    int n;
    int *e = &n;
    GetElem(a,3,e);
    printf("%d\n",*e);

laoq 发表于 2019-5-7 21:14:14

e完全没必要设为指针变量,整型变量就行了

Croper 发表于 2019-5-7 22:00:58

getElem这样写就好,完全不需指针啊:
int GetElem(Sqlist L,int pos)
{
    if(pos<1||pos>L.length)
    {
      printf("wrong input");
      return -1;
    }
    return L.data;
}
页: [1]
查看完整版本: GetElem段错误