繁体   English   中英

将二维数组传递给函数将返回意外输出

[英]Passing a 2-D array to a function returns an unexpected output

这个程序的目的是计算多个向量的长度,然后按大小对它们进行排序,我编写了一个函数VL,该函数带有一维数组作为输入以及上述数组的长度,并在另一个程序中对其进行了测试,工作正常。

VL功能

double VL(double w[], int num)                         /*Calculate vector length*/
{

int k;
double presqrt;
double length = 0;

for (k = 0; k < num; k++)
{
    presqrt += w[k] * w[k];
}
length = sqrt(presqrt);

return length;
}

主要功能(已经提供了该功能的大部分。)在下面的代码中,我编写了一个小的for循环来测试该输入是否返回了正确的幅度。

int main(void)
{
int dim, num ;
int i, j;
double **w;

scanf("%d %d",&dim,&num);                            /* read N and M */
w = calloc(num, sizeof (double *));                   /* allocate array of M        pointers */
for(i=0; i<num; i++)                                /* allocate space for N dimensional vector */
{
    w[i]= calloc(dim,sizeof(double));              /* read the vector */
    for (j=0; j<dim ; j++)
    {
        scanf("%le",&w[i][j]) ;
    }
}

for(i=0; i<num; i++)                        /*printing vector lengths(test)*/
{
    printf("%.2f\n", VL(w[i], num));
}

return 0 ;
}

VL函数中,将乘法结果添加到presqrt

presqrt += w[k] * w[k];

但是, presqrt的初始值未定义。

请在VL函数的最开始将其初始化为0.0:

double presqrt = 0.0;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM