马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
int main(void)
{
int i;
double x, y, result;
double (*func_table[4])(double, double) = {add, sub, mul, divi}; //这行代码应该怎样理解呢?我的理解是:func_table是一个指针,指向一个四个元素的数组,然后就读不下去了?这里为什么可以直接定义数组里的元素?
printf("请输入两个数:");
scanf("%lf %lf", &x, &y);
printf("对这两个数进行加减乘除后的结果是:");
for (i = 0; i < 4; i++)
{
result = (*func_table[i])(x, y);
printf("%.2f ", result);
}
putchar('\n');
return 0;
}
问题2:#include <stdio.h>
float add(float x, float y)
{return x+y;}
float calc(float (*fp)(float, float),float x,float y)
{return (*fp)(x,y);}
float (*select(char op))(float x,float y)
{switch(op){case '+':return add;}}
int main()
{
float a=1.0;
float b=2.0;
char op;
float (*fp)(float,float);
fp=select(+);
printf("%.2f",calc(fp,1,2));
return 0;
}
1.每次编译都会提醒倒数第三行的右括号前差了点什么,是什么问题呢?
本帖最后由 Croper 于 2018-12-22 22:28 编辑
1、func_table是一个长度为4的函数指针的数组;指向的元素必须是有两个double参数,返回值为double的函数;并初始化为指向add, sub, mul, divi这4个函数
2、+作为一个字符需要写成'+'的形式
|