c++问题:用指向函数的指针计算sin(x),函数在运行时堆桟溢出
我写的代码如下:#include"stdio.h"#include"math.h"doubleh(doublex,double(*func)(double)){retur...
我写的代码如下:
#include"stdio.h"
#include"math.h"
double h(double x,double(*func)(double))
{ return ((*func)(x));}
double sin(double x)
{
return(sin((x*3.1415926)/180));
}
double cos(double x)
{
return(cos((x*3.1415926)/180));
}
double log(double x)
{
return(log(x));
}
void main()
{
double x,(*oper[3])(double);
int i;
printf("please put x:\n");
scanf("%lf",&x);
oper[0]=sin;
oper[1]=cos;
oper[2]=log;
for (i=0;i<3;i++)
printf("%lf",h(x,oper[i]));
}
warning:
warning C4717: “log”: 如递归所有控件路径,函数将导致运行时堆栈溢出
warning C4717: “cos”: 如递归所有控件路径,函数将导致运行时堆栈溢出
warning C4717: “sin”: 如递归所有控件路径,函数将导致运行时堆栈溢出 展开
#include"stdio.h"
#include"math.h"
double h(double x,double(*func)(double))
{ return ((*func)(x));}
double sin(double x)
{
return(sin((x*3.1415926)/180));
}
double cos(double x)
{
return(cos((x*3.1415926)/180));
}
double log(double x)
{
return(log(x));
}
void main()
{
double x,(*oper[3])(double);
int i;
printf("please put x:\n");
scanf("%lf",&x);
oper[0]=sin;
oper[1]=cos;
oper[2]=log;
for (i=0;i<3;i++)
printf("%lf",h(x,oper[i]));
}
warning:
warning C4717: “log”: 如递归所有控件路径,函数将导致运行时堆栈溢出
warning C4717: “cos”: 如递归所有控件路径,函数将导致运行时堆栈溢出
warning C4717: “sin”: 如递归所有控件路径,函数将导致运行时堆栈溢出 展开
2个回答
展开全部
可能是因为自定义函数sin等和库函数重名的缘故。
将
double sin(double x)
{
return(sin((x*3.1415926)/180));
}
改为
double msin(double x)
{
return(sin((x*3.1415926)/180));
}
以及
oper[0]=sin;
改为
oper[0]=msin;
(其它几个函数做类似改动)
试试。
将
double sin(double x)
{
return(sin((x*3.1415926)/180));
}
改为
double msin(double x)
{
return(sin((x*3.1415926)/180));
}
以及
oper[0]=sin;
改为
oper[0]=msin;
(其它几个函数做类似改动)
试试。
追问
谢谢!改过就可以了!
只要我自己定义的函数不和库函数重名就没有问题啦~~
作为一只初学者,看到下面出的问题自己都不明白是什么意思……
展开全部
把double sin (double x)改为double _sin (double x);
把double cos (double x)改为double _cos(double x);
把double log (double x)改为double _log(double x);
把oper[0]=sin改为oper[0]=_sin;
后面的两句做相应改动
把double cos (double x)改为double _cos(double x);
把double log (double x)改为double _log(double x);
把oper[0]=sin改为oper[0]=_sin;
后面的两句做相应改动
更多追问追答
追问
谢谢您!
改完之后可以正常运行了!
可以在追问一下原因吗?(初学者,之前没有接触过_)
追答
加_(下划线),实际上就是让自己定义的函数和数学库函数取不同的名字。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询