为什么类型会不一样
#include<stdio.h>#include<math.h>
int main()
{
double fac1(double x,double y);
double fac2(double x,double y);
double fac3(double x,double y);
double a1,a2,a3,b1,b2,b3,i,j,k;
double *p;
printf("请输入a1,b1的值;");//上下标的值
scanf("%d%d",&a1,&b1);
printf("请输入a2,b2的值;");
scanf("%d%d",&a2,&b2);
printf("请输入a3,b3的值;");
scanf("%d%d",&a3,&b3);
p=fac1; //关键在这,为什么我指针用了double型还是类型不匹配
fac1(a1,b1);
printf("sinx的积分值为%.4lf\n",*p);
p=fac2; //同上
fac2(a2,b2);
printf("cosx的积分值为%.4lf\n",*p);
p=fac3; //同上
fac3(a3,b3);
printf("e^x的积分值为%.4lf\n",*p);
return 0;
}
double fac1(double x,double y)
{
double t;
t=cos(y)-cos(x);
return (t);
}
double fac2(double x,double y)
{
double t;
t=sin(x)-cos(y);
return (t);
}
double fac3(double x,double y)
{
double t;
t=exp(y)-exp(x);
return (t);
} double a1,a2,a3,b1,b2,b3,i,j,k;
double *p;
printf("请输入a1,b1的值;");//上下标的值
scanf("%d%d",&a1,&b1);
printf("请输入a2,b2的值;");
scanf("%d%d",&a2,&b2);
printf("请输入a3,b3的值;");
scanf("%d%d",&a3,&b3);
你觉得合适么 bin554385863 发表于 2019-10-4 01:21
double a1,a2,a3,b1,b2,b3,i,j,k;
double *p;
printf("请输入a1,b1的值;");//上下标的 ...
我改了,但是结果还是 assignment from incompatible pointer type 本帖最后由 bin554385863 于 2019-10-4 13:15 编辑
double *p;
printf("请输入a1,b1的值;");//上下标的值
scanf("%d%d",&a1,&b1);
printf("请输入a2,b2的值;");
scanf("%d%d",&a2,&b2);
printf("请输入a3,b3的值;");
scanf("%d%d",&a3,&b3);
p=fac1; //关键在这,为什么我指针用了double型还是类型不匹配
fac1(a1,b1);
printf("sinx的积分值为%.4lf\n",*p);
p=fac2; //同上
fac2(a2,b2);
printf("cosx的积分值为%.4lf\n",*p);
p=fac3; //同上
fac3(a3,b3);
p是一个double类型的指针,你见过给一个指针赋普通值的?
看不懂英文可以在线翻译啊
用函数指针指向函数不就行了 bin554385863 发表于 2019-10-4 13:13
double *p;
printf("请输入a1,b1的值;");//上下标的值
scanf("%d%d",&a1,&b1) ...
我想用指向函数的指针,请问要怎样使用指向函数的指针? 666666q 发表于 2019-10-4 14:24
用函数指针指向函数不就行了
可以说一下怎么使用吗? 机智如我么么哒 发表于 2019-10-4 14:37
可以说一下怎么使用吗?
把你现在的代码贴出来,把你现在的需求贴出来
机智如我么么哒 发表于 2019-10-4 14:37
可以说一下怎么使用吗?
定义一个函数指针 用函数指针指向函数 本帖最后由 superbe 于 2019-10-10 21:26 编辑
#include<stdio.h>
#include<math.h>
int main()
{
double fac1(double x,double y);
double fac2(double x,double y);
double fac3(double x,double y);
double a1,a2,a3,b1,b2,b3,i,j,k;
double (*p)(double x,double y); //声明函数指针,只要把函数原型中的函数名替换为(*p)就可以了
printf("请输入a1,b1的值:");
scanf("%lf%lf",&a1,&b1); //a1,b1是double,使用%lf,不能用%d
printf("请输入a2,b2的值:");
scanf("%lf%lf",&a2,&b2);
printf("请输入a3,b3的值:");
scanf("%lf%lf",&a3,&b3);
p=fac1; //给函数指针赋值
printf("sinx的积分值为%.4lf\n",(*p)(a1,b1));//调用函数指针,把(*p)或p当成函数名像普通函数一样调用就可以了
p=fac2;
printf("cosx的积分值为%.4lf\n",(*p)(a2,b2));//p(a2,b2)也可以
p=fac3;
printf("e^x的积分值为%.4lf\n",(*p)(a3,b3));
return 0;
} superbe 发表于 2019-10-6 22:38
谢谢,这几天没上论坛,确认晚了
页:
[1]