C 从指针结构打印成员
我有一个这样的结构C 从指针结构打印成员,c,function,pointers,struct,C,Function,Pointers,Struct,我有一个这样的结构 typedef struct Thing{ int att; } Thing; Thing *newThing(){ Thing *t; t = (Thing *)(malloc(sizeof(Thing))); thing->att = 0; return t; } 我有一个printThing函数,它尝试打印att中的值,如下所示: void printThing(Thing *t){ printf("%d", t
typedef struct Thing{
int att;
} Thing;
Thing *newThing(){
Thing *t;
t = (Thing *)(malloc(sizeof(Thing)));
thing->att = 0;
return t;
}
我有一个printThing函数,它尝试打印att中的值,如下所示:
void printThing(Thing *t){
printf("%d", t->att);
}
然而,这会导致分割错误,但我可以用同样的方法打印正确的值。我做错了什么
int main(){
Thing *t1 = readThing();//This works
printf("%d", t1->att); //This also works
printThing(t1); //Segmentation fault
return 0;
}
问题可能在这里:
Thing *newThing(){
Thing *t;
t = (Thing *)(malloc(sizeof(Thing)));
thing->att = 0;
return t;
}
因为你动态地分配内存,让
t
指向它,但是你做了thing->att=0代码>和非t->att=0代码>,这是您应该做的。如何为结构分配内存?请给出一个最小的完整示例!如果第一个printf()代码>这篇文章仍然缺乏一套清晰的代码来展示问题-只是一些片段。是的,大家都看到了!除非使用非C编译器,否则我预计会出现编译错误。如果在@chux中未显示的某个地方声明了thing
,则不会出现编译错误。YaaSuka,你也会看到的,我刚才看到了编辑!;)是,但代码正在打印未分配的成员。即使是UB,我也希望随机打印数据,而不是seg故障。嗯,UB是UB,OP的帖子仍然不完整,其真实性受到质疑。