#include <iostream>
#include <conio>
#include <math>
using namespace std;
void main()
{
double b[1000], mxrs[1000],mnrs[1000], ls[1000]; int t, i;
clrscr();
cin>>t;
for(i=0;i<t;i++)
cin>>b[i]>>ls[i];
for(i=0;i<t;i++)
{
mxrs[i]=sqrt(ls*ls+b*b);
mnrs[i]=sqrt(ls*ls-b*b); cout<<mnrs[i]<<' '<<mxrs[i]<<'\n';
}
getch();
}
我在这段代码中得到4个错误......
main.cpp | 16 |错误E2087:在函数main()|中非法使用指针 main.cpp | 16 |错误E2087:在函数main()|中非法使用指针 main.cpp | 17 |错误E2087:在函数main()|中非法使用指针 main.cpp | 17 |错误E2087:在函数main()|中非法使用指针 || ===构建完成:4个错误,0个警告=== |
请帮我纠正错误,即使你只告诉我错误的原因也会有所帮助。提前谢谢!
答案 0 :(得分:0)
ls,bs
指的是数组的基址。所以他们的地址不是价值。我认为这是你打算做的。
#include <iostream>
#include <conio>
#include <math>
using namespace std;
void main()
{
double b[1000], mxrs[1000],mnrs[1000], ls[1000]; int t, i;
clrscr();
cin>>t;
for(i=0;i<t;i++)
cin>>b[i]>>ls[i];
for(i=0;i<t;i++)
{
mxrs[i]=sqrt(ls[i]*ls[i]+b[i]*b[i]);
mnrs[i]=sqrt(ls[i]*ls[i]-b[i]*b[i]); cout<<mnrs[i]<<' '<<mxrs[i]<<'\n';
}
getch();
}
让我们举一个简单的例子来理解这个概念:
int a[5]={1,2,3,4,5};
cout<<*a; //prints the value at base address which is 1 as a refers to a[0]
cout<<a[0]; //prints 1
cout<<*(a+1); //prints 2 ... as a+1 refers to the address next to its base which is a[1] and which is 2
cout<<a[1];//prints 2
答案 1 :(得分:0)
当您撰写double b[1000]
时,您可以通过撰写b[n]
或*(b + n)
来访问数组元素,注意将n
保留在界限内 of the array。
因此*b
和b[0]
是等效的。换句话说,b
是数组第0个元素的指针。写b * b
是试图将两个指针相乘,这是没有意义的。这就是编译器告诉你的。
要乘以数组元素,请使用b[n] * b[m]
或*(b + n) * *(b + m)
。
(并修正main
的返回类型:它应为int
。)
答案 2 :(得分:-1)
你放#include <math>
,应该是#include <math.h>
。 <iostream>
和<conio>
也是如此。你忘记了所有这些.h
。