需要帮助理解传递论点的功能

Need help understanding passing arguments to function

本文关键字:功能 帮助 助理      更新时间:2023-10-16

我是C 的新手,不确定如何将参数传递给函数。

我正在使用函数Distance()来计算两个节点之间的距离。我声明这样的功能:

int Distance(int x1, int y1, int x2 , int y2)
{   
    int distance_x = x1-x2;
    int distance_y = y1- y2; 
    int distance = sqrt((distance_x * distance_x) + (distance_y * distance_y));
    return distance; 
}

在主内存中,我有2个for循环。我需要知道的是,如果我可以通过这样的值: Distance (i, j, i+1, j+1)

for(int i = 0; i < No_Max; i++)
{
    for(int j = 0; j < No_Max; j++)
    {
        if(Distance(i, j, i+1, j+1) <= Radio_Range) // the function 
            node_degree[i] = node_degree[i] + 1;
        cout << node_degree[i] << endl;
    }  
}

与函数的参数可以作为与该参数类型匹配或可以施放到其的任何表达式。

提示:如果要使用SQRT:

,则应使用Double而不是INT

http://www.cplusplus.com/reference/clibrary/cmath/sqrt/

看起来好像您正在正确调用Distance(int, int, int, int)功能。以下语句将致电Distance()

Distance (i, j, i+1, j+1);

这将存储 Distance()返回的值中的变量:

int dist = Distance (i, j, i+1, j+1);

这将比较Distance()(左操作数)返回的值与Radio_Range(右操作数)。如果左操作数小于或等于右操作数,则将其评估为1(true)。否则将是0(false)。如果if语句中表达式的总体值非零,则将执行if语句之后的语句或块:

if(Distance(i, j, i+1, j+1) <= Radio_Range)
   //Statement;

或:

if(Distance(i, j, i+1, j+1) <= Radio_Range){
   //Statement;
   //Statement;
   //...
}

但是,Distance()返回的值将被截断为整数。因此,除非(distance_x * distance_x) + (distance_y * distance_y)是完美的正方形,否则distance将不会等于实际距离。为了获得更好的精度,请考虑使用double。如果您打算让函数返回int,那么进行明确的类型铸件是明智的,例如:

int distance = (int)sqrt((distance_x * distance_x) + (distance_y * distance_y));

这将确保您或其他任何人以后查看代码,他们将不会认为该功能使用错误的数据类型。