小弟我定义的函数表为什么不对
我定义的函数表为什么不对?
这段代码错在哪里?
------解决方案--------------------
你用void*是无类型,只是方便你收纳不同的函数,后头使用时得正确转回原来类型...
//int myint = (int)pa[0];
int myint = ((int (*)())pa[0])();
//char mychar = (char)pa[1];
char mychar =(((char (*)())pa[1])();
觉得函数类型很绕,就事先typedef简化一下...
typedef int (*fx)();
typedef char (*fy)();
...
int myint = ((fx)pa[0])();
char mychar =(((fy)pa[1])();
------解决方案--------------------
试试这个
#include <stdio.h>
int f0()
{
return 3;
}
char f1()
{
return 'a';
}
void main()
{
void *pa[2];
pa[0] = f0;
pa[1] = f1;
int myint = (int)pa[0];
char mychar = (char)pa[1];
printf("%d\n",myint);
printf("%c\n",mychar);
/*int (*p)() = f0;
printf("%d",p());*/
}
这段代码错在哪里?
------解决方案--------------------
你用void*是无类型,只是方便你收纳不同的函数,后头使用时得正确转回原来类型...
//int myint = (int)pa[0];
int myint = ((int (*)())pa[0])();
//char mychar = (char)pa[1];
char mychar =(((char (*)())pa[1])();
觉得函数类型很绕,就事先typedef简化一下...
typedef int (*fx)();
typedef char (*fy)();
...
int myint = ((fx)pa[0])();
char mychar =(((fy)pa[1])();
------解决方案--------------------
#include <stdio.h>
int f0()
{
return 3;
}
char f1()
{
return 'a';
}
int main()
{
void *pa[2];
int a = f0();
char b = f1();
pa[0] = (void*)(&a);
pa[1] = (void*)(&b);
int* myint = (int*)pa[0];
char* mychar = (char*)pa[1];
printf("%d\n",*myint);
printf("%c\n",*mychar);
return 0;
/*int (*p)() = f0;
printf("%d",p());*/
}
试试这个