传递参数数组错误 我试图在C++中传递数组参数。 代码是这样的 main() { ... double *terms = new double[9]; GuassianTerms(9,1,terms);

传递参数数组错误 我试图在C++中传递数组参数。 代码是这样的 main() { ... double *terms = new double[9]; GuassianTerms(9,1,terms);,c++,C++,...} double Cmfc_test5Dlg::Guassian(int x, double sigma) { double c = 2.0 * sigma * sigma; return exp(-x * x / c) / sqrt(c * 3.141592f); } double Cmfc_test5Dlg::GuassianTerms(int kernalSize, double sigma, double terms[]) { t

<此处术语的值不正确>

...}


double Cmfc_test5Dlg::Guassian(int x, double sigma)
{
        double c = 2.0 * sigma * sigma;
        return exp(-x * x / c) / sqrt(c * 3.141592f);
}
double Cmfc_test5Dlg::GuassianTerms(int kernalSize, double sigma, double terms[])
{
        terms = new double[kernalSize];
        for (int i = 0; i < kernalSize; ++i) {
                terms[i] = Guassian(i - kernalSize / 2, sigma);
        }
        return 1;//*terms;
}
…}
双Cmfc_test5Dlg::Guassian(整数x,双西格玛)
{
双c=2.0*西格玛*西格玛;
返回exp(-x*x/c)/sqrt(c*3.141592f);
}
双Cmfc_test5Dlg::GuassianTerms(int-kernalSize,双西格玛,双项[])
{
术语=新的双精度[kernalSize];
for(int i=0;i
但是术语有一些错误的值

如何获得通过数组的参数

我应该怎么解决这个问题呢?

double-Cmfc_-test5Dlg::GuassianTerms(int-kernalSize,double-sigma,double*terms)
double Cmfc_test5Dlg::GuassianTerms(int kernalSize, double sigma, double* terms)
{
        for (int i = 0; i < kernalSize; ++i) {
                terms[i] = Guassian(i - kernalSize / 2, sigma);
        }
        return 1;//*terms;
}
{ for(int i=0;i
terms=newdouble[kernalSize]
GuassianTerms
中?术语类型为double*,因此将其作为double*术语传递。而且,这种方式会导致内存泄漏,因为您已经在main中分配了术语。要么不要再分配它们,要么先清理内存。我是新手。因此,我不知道从何处开始。“工作不好”不是一个有用的问题描述。请添加一些注释来解释问题的原因/您为什么建议您的答案…谢谢,我知道了;。我已经决定接受你的回答。感谢在参数列表中从
double[]
double*
的更改主要是装饰性的。这些术语在语法上是等价的,但由于它实际上是一个被传递的指针,我更喜欢
double*
为人类读者提供更好的信息。造成实际差异的变化是删除
terms=newdouble[kernalSize]来自
GaussianTerms()
。该数组已在调用代码中分配,在被调用函数中使用该语句会导致混乱和内存泄漏,以及错误的结果。