函數指針及其應用
//函數指針
/*#include<stdio.h>
void f(void)
{
printf("in f()\n");
}
int main(void)
{
int i=0;
int *p=&i;
*p=20;//運用指針修改i的值
void (*pf)(void) = f; //指針函數
f(); //int f()
(*pf)(); //int f()
return 0;
}
*/
/*
#include<stdio.h>
void f(int i)
{
printf("int f(),%d\n",i);
}
void g(int i)
{
printf("int g(),%d\n",i);
}
void h(int i)
{
printf("int h(),%d\n",i);
}
void k(int i)
{
printf("int k(),%d\n",i);
}
int main(void)
{
int i=0;
scanf("%d",&i);
if(i==0) //方一
{
f(0);
}else if(i==1)
{
g(0);
}
switch(i) //方二
{
case 0:f(0);break;
case 1:g(o);break;
case 2:h(0);break;
}
void (*fa[])(int)={f,g,h,k};
if(i>=0&&i<sizeof(fa)/sizeof(fa[0]))
{
(*fa[i])(0);
}//一般用於根據用戶輸入來判斷做什麽事
return 0;
}
*/
//來的實的
#include<stdio.h>
int plus(int a,int b)
{
return a+b;
}
int minus(int a,int b)
{
return a-b;
}
void cal(int (*f)(int,int))
{
printf("%d\n",(*f)(2,3));
}
int main(void)
{
cal(plus);
cal(minus);
return 0;
}
函數指針及其應用