这两个函数都是(至少在我的编译器下)保证会创建一个seg错误,但我不知道为什么。我真的很喜欢他们的功能,我也看到了类似的例子,所以我很想知道这里出了什么问题,或者怎么做,我认为这实际上是做什么的,它将一个“级”传递给某个函数,然后能够操纵其变量(例如lvl.lvl_cl [X] [Y] [Z] = some_number),然后传递回用于进一步使用将结构传递给一个函数会创建一个默认错误
任何帮助理解:)
typedef struct {
int lvl_cl[500][500][50];
char lvl_ch[500][500][50];
} level;
level plugh(level * in_lvl){
in_lvl->lvl_cl[444][444][44]++; //it segfaults even if this line is removed
return * in_lvl;
}
level foo(level inlvl){
inlvl.lvl_cl[443][443][43]++; //it segfaults even if this line is removed
return inlvl;
}
int main(void){
level world;
plugh(&world);
foo(world);
return 0;
}
12.000 KO值int。哇!阅读您的评论。使用类似这样的方式:将'level'定义为'* level',并使用'new'关键字在堆上创建对象。它绝对会帮助你。 – 2011-04-18 19:54:11
你知道你的结构没有被初始化吗? – 2011-04-18 20:03:53
@AdrianMar这是一个C的问题。 – 2011-04-18 20:06:11