所以我有一个问题我有一个名为Image和一个函数LoadImage的结构,它工作得很好但是当我有这样的东西时:
Animation.h
typedef struct Anim
{
Anim_data anim_data[20];
Image* img_anim;
int curr;
}Anim;
void AnimLoad(char* name, Anim* a)
{
ImageLoad("../../Resource/pingvin.jpeg", a->img_anim);
}
ImageLoad函数中断了我认为它与a-> img_anim有关但不知道它有什么问题,当我给出一个Image结构时工作正常我不会在另一个结构中。
所以只是为了清楚这个函数的工作原理,当我给它一个我从另一个结构调用的结构图时,它就没有了。
答案 0 :(得分:3)
你需要像这样为a-> img_anim分配空间:
Anim a;
a.img_anim = malloc(sizeof(Image *));
a.img_anim = Address of image.
然后在你的函数中它应该工作。
编辑:
在结构的C99规范中,除非您手动初始化它,否则不会对其进行初始化,例如:
struct a{
int member1;
int member2;
}
struct a example = {.member1 = 2002,.member2 = 3003}; //This is initialization manually. This is like manually allocating an array with
//Int[] a = {1, 2, 3};
否则你需要这样做:
struct a;
a.member1 = malloc(sizeof(int));
a.member2 = malloc(sizeof(int));
这给了member1和member2大小为4字节的内存(这是一个整数) 如果你不这样做,member1和member2在内存中没有斑点!