程序执行时 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;
}
#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]