鱼C论坛

 找回密码
 立即注册
查看: 1073|回复: 1

[已解决]程序执行时 Segmentation fault

[复制链接]
发表于 2020-10-19 14:57:28 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 rt3 于 2020-10-19 14:58 编辑

下面这个代码

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

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

  3. struct numbers{
  4.         struct numbers *Previous;
  5.         int value;
  6.         struct numbers *Next;
  7. };

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

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

  21. int main(){
  22.         struct numbers** a=NULL;
  23.         setvalue(a);
  24.         printnum(a);
  25.         free(*a);
  26.         return 0;
  27. }

复制代码



最佳答案
2020-10-19 14:57:29

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

  3. struct numbers{
  4.         struct numbers *Previous;
  5.         int value;
  6.         struct numbers *Next;
  7. };

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

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

  22. int main(){
  23.         //这里改一下
  24.         struct numbers* a=NULL;
  25.         setvalue(&a);
  26.         printnum(&a);
  27.         free(a);
  28.         return 0;
  29. }


复制代码

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-19 14:57:29 | 显示全部楼层    本楼为最佳答案   

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

  3. struct numbers{
  4.         struct numbers *Previous;
  5.         int value;
  6.         struct numbers *Next;
  7. };

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

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

  22. int main(){
  23.         //这里改一下
  24.         struct numbers* a=NULL;
  25.         setvalue(&a);
  26.         printnum(&a);
  27.         free(a);
  28.         return 0;
  29. }


复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 05:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表