C#中的sin cos不用加角度吗?(C语言 编程)

2022-08-06 教育 64阅读

首先要说明,你这个代码不是C#而是C++的,C#不做设置是不可以用指针的。

其次,你要注意这个tran函数的定义,其中前两个参数是函数指针,而且是具有一个double参数的函数,返回也是double,即 f(x) 格式的函数。

double tran(double (*f1)(double) , double (*f2)(double) ,double x)

主函数中,当执行 y=tran(sin,cos,v)时,sin和cos函数的地址与v一同被传递给tran,然后执行运算后返回给y。

return (*f1)(x)/(*f2)(x)

注意函数地址传入后是如何被调用的。进入tran后,sin函数的地址保存在f1,cos函数地址保存在f2,使用星号取得f1所保存的地址,用括号将x当做f1的参数,此时x即主函数的v值,这就是通过函数指针调用函数的格式,非常有用,非常灵活,你要熟练掌握。f2的调用也是一样,所以其等价与  return sin(x)/cos(x)。

现在理解了不?并非sin,cos不带参数,而是主函数中并没有直接去调用sin和cos,因为tran的前两个参数是函数指针,因此执行tran(sin,cos,v)时,是取sin和cos的函数地址然后传递给tran,在tran里面再将x传递给f1和f2,间接调用sin和cos。

忘了说明了,程序语言中的三角函数的参数不是角度,而是弧度,如果你给出的是角度,调用前必须要转换成弧度,公式为 弧度=角度 * 3.14/180。为什么不用角度,为了计算方便,那是数学问题了。

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com