[英]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.