C++中关于指针应用时出现的问题

求助各位大佬,我写的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));
}

然后输出就正常了。

所以是因为指针不能这么用还是说我的表达式有哪里不对呢?(因为代码中有挺多都用了前面那种表达的,如果都要改起来很麻烦。而且感觉第二种方式挺浪费空间的。)求各位大佬帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值