在C语言程序中看到double ( (1) )={sin,cos,log};是什么意思,}下述函数中定义一个指向函数的指针数组并循环接受一个整数X,在x的值为1,2,3时分别输出sin(0.5),cos(0.5),log(0.5)的值,假定程序中定
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/03 23:57:35
![在C语言程序中看到double ( (1) )={sin,cos,log};是什么意思,}下述函数中定义一个指向函数的指针数组并循环接受一个整数X,在x的值为1,2,3时分别输出sin(0.5),cos(0.5),log(0.5)的值,假定程序中定](/uploads/image/z/3014599-31-9.jpg?t=%E5%9C%A8C%E8%AF%AD%E8%A8%80%E7%A8%8B%E5%BA%8F%E4%B8%AD%E7%9C%8B%E5%88%B0double+%28+%281%29+%29%3D%7Bsin%2Ccos%2Clog%7D%3B%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%2C%7D%E4%B8%8B%E8%BF%B0%E5%87%BD%E6%95%B0%E4%B8%AD%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E6%8C%87%E5%90%91%E5%87%BD%E6%95%B0%E7%9A%84%E6%8C%87%E9%92%88%E6%95%B0%E7%BB%84%E5%B9%B6%E5%BE%AA%E7%8E%AF%E6%8E%A5%E5%8F%97%E4%B8%80%E4%B8%AA%E6%95%B4%E6%95%B0X%2C%E5%9C%A8x%E7%9A%84%E5%80%BC%E4%B8%BA1%2C2%2C3%E6%97%B6%E5%88%86%E5%88%AB%E8%BE%93%E5%87%BAsin%EF%BC%880.5%EF%BC%89%2Ccos%EF%BC%880.5%EF%BC%89%2Clog%EF%BC%880.5%EF%BC%89%E7%9A%84%E5%80%BC%2C%E5%81%87%E5%AE%9A%E7%A8%8B%E5%BA%8F%E4%B8%AD%E5%AE%9A)
在C语言程序中看到double ( (1) )={sin,cos,log};是什么意思,}下述函数中定义一个指向函数的指针数组并循环接受一个整数X,在x的值为1,2,3时分别输出sin(0.5),cos(0.5),log(0.5)的值,假定程序中定
在C语言程序中看到double ( (1) )={sin,cos,log};是什么意思,
}下述函数中定义一个指向函数的指针数组并循环接受一个整数X,在x的值为1,2,3时分别输出sin(0.5),cos(0.5),log(0.5)的值,假定程序中定义的指针数组名为pt,请填空.#include
#include
void main()
{ int x;
double ( (1) )={sin,cos,log};
do
{
scanf("%d",&x);
if(x3)
continue;
printf("The value is :%f",( (2) ));
}while(x!=-1);
}(1)处答案为(*pt[])(double v)或(*pt[3])(double v)
(2)处答案为(*pt[x-1])(0.5)
我想知道为什么答案是这样
在C语言程序中看到double ( (1) )={sin,cos,log};是什么意思,}下述函数中定义一个指向函数的指针数组并循环接受一个整数X,在x的值为1,2,3时分别输出sin(0.5),cos(0.5),log(0.5)的值,假定程序中定
sin,cos,log原型为double sin(double).它们的返回值和参数类型都一样,所以可用同样的函数指针来表示,即double (*p)(double)//其实和一般指针一样如:int* p;形式上怪些
所以(1)处,定义函数指针数组:
double (*p[])(double)={};//在定义的时候赋值如int* p[]={&a,&b,&c};//a b c为int变量
再在引用变量时用*解析(*pt[0])(v);//其实同int 型的一样:*p[0]
其实一般的做法是定义下面的指针类型:typedef double (*pf)(double)
然后用新定义的类型定义数组指针变量如下pf p[]={sin,cos,log};
其实调用函数用(*p[])() 和(p[])()都可以.
这东西用得少,形式上感觉怪,其实和一般指针一样,只要透过形式就好.多用一下熟悉下就没问题了