A正确B,C定义的不是函数指针;D类型错(应为char *),赋值也错(函数fun这个名字指的就是这个函数的地址)。A是定义的void类型的函数指针,赋值时是把函数首地址(用fun表示)赋给pf这个函数指针。
严格的说,这几个没有一个对的。D错的地方很明显,参数类型错了!
正确的应该是这样的
void (*pf)(int,char*s);pf=&fun; // pf=fun 也是对的。
应该是char*