我创建了一个结构,并希望将值分配给另一个结构的函数指针。我写的示例代码如下所示。请看看我错过了什么。
#include <stdio.h>
#include <string.h>
struct PClass{
void *Funt;
}gpclass;
struct StrFu stringfunc;
struct StrFu{
int a ;
char c;
};
Initialise(){
}
main()
{
stringfunc.a = 5;
stringfunc.c = 'd';
gpclass.Funt = malloc(sizeof(struct StrFu));
gpclass.Funt = &stringfunc;
memcpy(gpclass.Funt,&stringfunc,sizeof(struct StrFu));
printf("%u %u",gpclass.Funt->a,gpclass.Funt->c);
}
答案 0 :(得分:2)
有几个问题:
void *
不同,实际上你不能依赖它们之间的转换。malloc()
in C。malloc()
,然后覆盖返回的指针。malloc()
来存储单个指针,只需使用指针。memcpy()
复制结构,只需使用赋值。main()
原型:int main(void)
和int main(int argc, char *argv[])
,您也没有。{/ li>
醇>
答案 1 :(得分:0)
你的代码中存在很多问题,我尝试纠正它,希望它会有所帮助
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct PClass{
void *Funt;
}gpclass;
struct StrFu{
int a ;
char c;
};
struct StrFu stringfunc;
int main()
{
stringfunc.a = 5;
stringfunc.c = 'd';
gpclass.Funt = malloc(sizeof(struct StrFu));
gpclass.Funt = &stringfunc;
memcpy(gpclass.Funt,&stringfunc,sizeof(struct StrFu));
printf("%d %c",((struct StrFu*)gpclass.Funt)->a,((struct StrFu*)gpclass.Funt)->c);
return 0;
}
输出
5 d