十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
int d=e;
施秉网站建设公司成都创新互联,施秉网站设计制作,有大型网站制作公司丰富经验。已为施秉上1000家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的施秉做网站的公司定做!
这个就不对,改成d=e
还有,int e(int, int )
{
return a+b;
}
这个函数改成int e(int a, int b)
{
return a+b;
}
c语言中叫做回调函数,将函数指针(如max)作为函数的参数,函数(如fun)中调用这个参数指向的函数,
调用函数(fun)时看情况而给函数传入不同的函数指针
例如fun(a,b,min),那么fun函数调用执行三个参数就调用min函数
参数的定义要与传入的函数指针相匹配
例如fun(int,x,int y,(*p)(int,int)) 那么调用fun(a,b,min)时,min的参数必须是(int ,int)
#include stdio.h
#include stdlib.h
#include string.h
void virtualFun(int choice, int n, char *str[], char *(*p)(int , char **));
char *maxs(int n, char *s[]); //此函数通过指向函数的指针调用
char *mins(int n, char *s[]); //此函数通过指向函数的指针调用
char *minc(int n,char *s[]); //此函数通过指向函数的指针调用
void Menu();
char *(*func)(int n, char **);
int main() {
char *name[]={"FOLLOW ME","BASIC","GREAT WALL ","FORTRAN","COMPUTER DESIGN"};
int n=5;
char ch=0;
while (ch!=4) {
Menu();
ch = getchar();
getchar();//ignore '\n'
ch = ch - '0';
virtualFun(ch, n, name, func);
}
return 0;
}
void virtualFun(int choice, int n, char *str[], char *(*p)(int n, char **name)) {
switch(choice) {
case 1: //max string
p = maxs;
break;
case 2:
p = mins;
break;
case 3:
p = minc;
printf("[result is :%c]\n", *p(n, str)); //because the return is a char
default:
return;
}
printf("[result is :%s]\n", p(n, str));
}
char *maxs(int n, char *s[]) {
int i;
char *max = s[0];
for (i=1;in;i++) {
if (strcmp(max, s[i])0)
max = s[i];
}
return max;
}
char *mins(int n, char *s[]) {
int i;
char *min = s[0];
for (i=1;in;i++) {
if (strcmp(min, s[i])0)
min = s[i];
}
return min;
}
char *minc(int n, char *s[]) {
int i;
char ch = s[0][0], *p, *r=s[0];
for (i=0;in;i++) {
p = s[i];
while(*p++) {
if (*p0x20 ch*p) {
ch = *p;
r = p;
}
}
}
return r;
}
void Menu() {
char menu[] = "1 max string\n\
2 min string\n\
3 min char \n\
4 exit\n";
printf("%s", menu);
}