小弟我定义的函数表为什么不对

我定义的函数表为什么不对?
#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());*/
}

试试这个