求助各位大佬,我写的C++出了个bug:
typedef struct{
int L,d;
double q;
int IO,JO;
double S,H;
}Segment;//管段的结构体
Segment Se[M];
typedef struct{
double F;
double R;
double DQ;
}Cylinder;//环的结构体
Cylinder Cy[N];
这是我定义的两个结构体,并且后续有处理,将Cylinder中的F、R、DQ都赋值为0。
void calcuLate(Segment *ps,Cylinder *pc,int n,int m){
int i=0;
for(i=0;i<m;i++)
(ps+i)->S=10.293*T*T*(ps+i)->L/(pow((ps+i)->d/1000,5.33));
这是我的一个函数以及函数中的部分代码,其中T是常熟已经#define了。
出现的问题是,就按照这样来执行,调试时检查S最初为0,一旦执行这个for循环,S就变成了inf。
但是我把这个for里面稍微改一下,改成这样子
for(i=0;i<m;i++){
int tempL=(ps+i)->L;
double tempd=(ps+i)->d;
(ps+i)->S=10.293*T*T*tempL/(pow(tempd/1000,5.33));
}
然后输出就正常了。
所以是因为指针不能这么用还是说我的表达式有哪里不对呢?(因为代码中有挺多都用了前面那种表达的,如果都要改起来很麻烦。而且感觉第二种方式挺浪费空间的。)求各位大佬帮助!