当前位置: 代码迷 >> C语言 >> 关于指针函数,找了好多资料了,还是没有解决。
  详细解决方案

关于指针函数,找了好多资料了,还是没有解决。

热度:113   发布时间:2007-07-25 17:54:13.0

#include "stdio.h"

void enter(void);
void del(void);

void fun(void (* f)());

void main()
{
int i;
void (* a[2])(void);
a[0]=enter;
a[1]=del;
for(i=0;i<2;i++)
{
fun(a[i]);
}
}
void fun(void (* f)())
{
f();
}

void enter()
{
printf("Enter!\n");
}

void del()
{
printf("Del!\n");
}


----------------解决方案--------------------------------------------------------
int enter();
int *p;
p=enter;


这个错了吧. 是不是应该把int *p改成int enter *p ?????
----------------解决方案--------------------------------------------------------
你定义fun时参数是指向函数的指针,而主函数里调用时a[i]并不是指向某个函数的指针

----------------解决方案--------------------------------------------------------
呵呵。。。10楼和11十一楼以经给出了正确的答案了,大家有什么不明白的可以继续讨论一下。
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

坚持到底
2007-07-27 04:54:55
zzcko

等 级:新手上路
帖 子:20
专家分:0
注 册:2006-8-13
  得分:0 

又深挖了一下,呵呵。。。为我下面要做的一个小游戏做一下准备。

看看我必过的例子吧(WIN-TC编译通过):

#include "stdio.h"

int enter(int,int);
int del(int,int);

int fun(int (*f)(),int,int);

void main()
{
int i;
int x=6,y=3;
int res;
int (* a[2])();
a[0]=enter;
a[1]=del;
for(i=0;i<2;i++)
{
res=fun(a[i],x,y);
printf("%d\n",res);
}
getch();
}
int fun(int (* f)(),int a,int b)
{
return f(a,b);
}

int enter(int a,int b)
{
return (a+b);
}

int del(int a,int b)
{
return (a-b);
}


----------------解决方案--------------------------------------------------------
好帖子,顶一下!!
----------------解决方案--------------------------------------------------------