我有一些代码:
u=(float *)calloc(n, sizeof(float));
for(i=1; i<n; i++)
{
*(u+n)=dr*(*(u+n-1))-(dr*20)+(*(u+n-2));
*(u+i)=k1*(pow(*(u+i+1),2)+pow(*(u+i-1),2)-2*(*(u+i+1))*(*(u+i-1)))+(k2*(*(u+i))+k3)*(*(u+i+1)-2*(*(u+i))+(*(u+i-1)))+(k2*(*(u+i))+(k3/i)-k4)*(*(u+i+1)-(*(u+i-1)));
}
我在第三行有这个错误:(二进制+的操作数无效) 我该怎么办?
答案 0 :(得分:0)
首先 - 你必须提供更多细节!例如 - 哪条线是第三条线?如何定义?如何定义博士?
反正:
*(u+n)=dr*(*(u+n-1))-(dr*20)+(*(u+n-2));
肯定是一件坏事。
*(u+n)
超出了分配的内存。
但这并不能解释编译错误。
答案 1 :(得分:0)
如果我将n
或i
声明为浮动,我会收到同样的错误。
所以问题的答案是:
要添加到指针的每个变量都必须是整数类型。
int i;
int n;
在你的情况下。所有其他变量可以是float
。