|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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、+作为一个字符需要写成'+'的形式
|
|