rt3 发表于 2020-10-19 14:57:28

程序执行时 Segmentation fault

本帖最后由 rt3 于 2020-10-19 14:58 编辑

下面这个代码

用 一个 自定义函数 把 一个 数值 赋值给 数据结构变量中的 成员,
然后 再用 另一个 自定义 函数 把 这个 成员的 值 打印出来,
编译成功,但是 执行时 会 Segmentation fault,谢谢

#include <stdio.h>
#include <stdlib.h>

struct numbers{
        struct numbers *Previous;
        int value;
        struct numbers *Next;
};

int setvalue(struct numbers** a){
        struct numbers* b=malloc(sizeof(struct numbers));
        a=&b;
        if(b==NULL)return 1;
        printf("set value:");
        scanf("%d",&(b->value));
        printf("b->value==%d",b->value);
        return 0;
}//将 int 型 数值 赋值给b->value ,使 指针 a 指向 b

void printnum(struct numbers** a){
        struct numbers* b=*a;
        printf("b->value:%d.\n",b->value);
}//输出 a 所指向的 b 的 成员 value 的 值

int main(){
        struct numbers** a=NULL;
        setvalue(a);
        printnum(a);
        free(*a);
        return 0;
}




xieglt 发表于 2020-10-19 14:57:29


#include <stdio.h>
#include <stdlib.h>

struct numbers{
        struct numbers *Previous;
        int value;
        struct numbers *Next;
};

int setvalue(struct numbers** a){
        struct numbers* b=(struct numbers *)malloc(sizeof(struct numbers));
      //这里该一下
        *a=b;
        if(b==NULL)return 1;
        printf("set value:");
        scanf("%d",&(b->value));
        printf("b->value==%d",b->value);
        return 0;
}//将 int 型 数值 赋值给b->value ,使 指针 a 指向 b

void printnum(struct numbers** a){
        struct numbers* b=*a;
        printf("b->value:%d.\n",b->value);
}//输出 a 所指向的 b 的 成员 value 的 值

int main(){
      //这里改一下
        struct numbers* a=NULL;
        setvalue(&a);
        printnum(&a);
        free(a);
        return 0;
}


页: [1]
查看完整版本: 程序执行时 Segmentation fault