C语言函数指针很纠结的问题,请达人解惑……
#include "stdio.h"
void putHello(void)
{
printf("Hello……\n\n");
}
void (*fun[])(void)={putHello,NULL};
void main()
{
int i;
void (**pptr1)(void);
void (*pptr2)(void);
for (pptr1=fun;*pptr1;pptr1++)
{
(*pptr1)();
(*(*pptr1))();
}
for (pptr2=*fun;pptr2;pptr2++)//这种写法出了问题
{
//主要是解决这个,编译正常,运行结果也出来了,但一显示完显示内存错误,为什么??
pptr();
(*pptr2)();
}
fun[0]();
(*fun[0])();
}
[解决办法]
如果想动态给函数指针数组分配内存的话,可以参考下面的代码:
typedef void (*PFUN) ();void print_hello1(){ printf("hello1\n");}void print_hello2(){ printf("hello2\n");}int main(int argc, char **argv){ //PFUN pfun[2]; //pfun[0] = print_hello1; //pfun[1] = print_hello2; PFUN* pfun = (PFUN*)malloc(2 * sizeof(PFUN)); *pfun = print_hello1; *(pfun + 1) = print_hello2; for(int i = 0; i < 2; ++i) { (*(pfun + i))(); }}
[解决办法]