C++ 无法理解错误原因非法使用指针? #包括 #包括 #包括 使用名称空间std; void main() { 双b[1000],mxrs[1000],mnrs[1000],ls[1000];整数t,i; clrsc(); cin>>t; 对于(i=0;i>b[i]>>ls[i]; 对于(i=0;i
C++ 无法理解错误原因非法使用指针? #包括 #包括 #包括 使用名称空间std; void main() { 双b[1000],mxrs[1000],mnrs[1000],ls[1000];整数t,i; clrsc(); cin>>t; 对于(i=0;i>b[i]>>ls[i]; 对于(i=0;i,c++,arrays,pointers,C++,Arrays,Pointers,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()
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*ls+b*b);
mnrs[i]=sqrt(ls*ls-b*b); cout<<mnrs[i]<<' '<<mxrs[i]<<'\n';
}
getch();
}
#包括
#包括
#包括
使用名称空间std;
void main()
{
双b[1000],mxrs[1000],mnrs[1000],ls[1000];整数t,i;
clrsc();
cin>>t;
对于(i=0;i>b[i]>>ls[i];
对于(i=0;i当您写入double b[1000]
时,您可以通过写入b[n]
或*(b+n)
来访问数组元素,注意将n
保持在数组的范围内
因此*b
和b[0]
是等价的。换句话说,b
是指向数组第0个元素的指针。编写b*b
是尝试将两个指针相乘,这是没有意义的。这是编译器告诉您的
要将数组的元素相乘,请使用b[n]*b[m]
或*(b+n)**(b+m)
(并修复main
的返回类型:它应该是int
)你把#include
放进去,它应该是#include
。
和
都放进去了。你忘记了.h
。b*b
应该做什么?b
是一个数组。嗯,你引用的是ls
和b
,就好像它们都是数字一样;你需要添加一个index到每个引用。你的main的返回类型已经错误了什么是“#include”?你可能想使用“cmath”。我当时是一个noob,没有看到这是一个如此愚蠢的问题。现在回头看,我很惭愧。请阅读问题标签。这是一个C++
问题,在包含允许使用标题。
#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