回调函数:
这是一个没有意义的例子。
#include "stdafx.h"
void func(int n,int num1,int num2,int (*fp)(int,int))
{
int a=n*rand()%100;
printf("rander is %d \n",a);
num1=a*num1;
num2=a*num2;
printf("result is %d \n",fp(num1,num2));
}
int callback(int a,int b)
{
return a/b;
}
void main()
{
func(2,2,1,&callback);
getchar();
}
func(2,2,1,&callback);这句可以把&callback换成callback。一样的效果。
转移表:
#include<stdio.h>
#define Name_Length 20
char name[Name_Length);
void Chinese()
{
printf("%s,你好!",name);
}
void English()
{
printf("%s,hello!",name);
}
void main()
{
void (*fp[])()={Chinese,English};//首先是【】,说明是数组,其次是*,说明数组元素是指针,再者是()说明是一组指向无参函数的指针
int which;
scanf("%s",name);
scanf("%d",which);
if(which>1||which<0)
{
printf("input error!");
return;
}
fp[which]();//利用转移表来简化程序。这就是函数指针的威力。
}