C++ 无法将float转换为float*错误,但我将变量保存为数组?

C++ 无法将float转换为float*错误,但我将变量保存为数组?,c++,arrays,C++,Arrays,即使(我认为)我将震级数组存储为浮点*变量,我仍然会得到错误。为什么它说它是一个非数组浮点变量 特定错误表示“无法将参数“2”的“float”转换为“float*”,将其转换为“float stdev(int,float*,float&)” sta=标准偏差(长度、幅值[长度],平均值) #包括 #包括 使用名称空间std; 浮点型stdev(int,float*,float&); 内部主(空){ 整数长度=3; 浮动*幅度=新浮动[长度]; 震级[0]=1; 震级[1]=2; 震级[2]=3;

即使(我认为)我将震级数组存储为浮点*变量,我仍然会得到错误。为什么它说它是一个非数组浮点变量

特定错误表示“无法将参数“2”的“float”转换为“float*”,将其转换为“float stdev(int,float*,float&)” sta=标准偏差(长度、幅值[长度],平均值)

#包括
#包括
使用名称空间std;
浮点型stdev(int,float*,float&);
内部主(空){
整数长度=3;
浮动*幅度=新浮动[长度];
震级[0]=1;
震级[1]=2;
震级[2]=3;
浮动sta,平均值;
sta=标准偏差(长度、幅值[长度],平均值);
可以将stdev称为stdev(长度、大小、平均值)


magnitude[length]将具有类型float not float*。使用magnitude作为参数而不是magnitude[length]调用函数。此外,magnitude[length]实际上超出了您创建的数组的边界,因为c/c++中的数组从索引0开始,范围为长度-1


只需将数组的名称作为参数传递。

而不是
magnity[length]
,在调用
stdev
magnity[length]
时使用
magnity
而不是
magnity
是一个
float*
,这是您需要的。magnity[length]将具有类型float not float*。使用magnity作为参数而不是magnity[length]调用函数。此外,magnity[length]实际上超出了您创建的数组的边界,因为c/c++中的数组从索引0开始,范围到长度为-1。这修复了一个错误,但引发了另一个错误:未定义对`stdev'的引用(int,float*,float&)“collect2:错误:ld返回了1个退出状态,我不知道这可能是指“查看我对您答案的评论”。-这不是它的工作原理。我给出了答案,并添加了我的评论。如果这能让您高兴,我可以复制和粘贴我的评论。这不是“让我高兴”的原因,但你应该遵守网站规则,而不是发表势利的评论。评论(问题)并不能完成你的回答。但是,如果你喜欢在没有评论的情况下进行否决投票,请告诉我,下次我只需DV并给我留一条评论。javey,这修复了一个错误,但带来了另一个错误:未定义的对`stdev'的引用(int,float*,float&)“collect2:错误:ld返回了1个退出状态,我不知道这是指什么to@Olaf很抱歉,如果它被认为是势利的,但我认为你的第一个评论也是一样的。现在我将更新我的答案,不包括对我的评论的引用,而是在答案中提供更多细节。
#include <iostream>
#include <cmath>


using namespace std;


float stdev(int,float*,float&);


int main(void) {

int length=3;
float* magnitude=new float[length];
magnitude[0]=1;
magnitude[1]=2;
magnitude[2]=3;

float sta,avg;
sta=stdev(length,magnitude[length],avg);

cout << "Standard Deviation is" << sta << endl;
return 0;
}




float stdev(int N,float* a,float avg) {

float stdv;
float sum=0;
for (int k=0;k<N;k++) {
    sum=sum+a[k];

}    
   avg=sum/N;

float s = 0;   

  for (int k=0;k<N;k++) 
  s=s+(a[k]-avg)*(a[k]-avg);   

 stdv=sqrt(s/N); 

return stdv;

}