需要帮助理解传递论点的功能
Need help understanding passing arguments to function
我是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而不是INThttp://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));
这将确保您或其他任何人以后查看代码,他们将不会认为该功能使用错误的数据类型。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 需要帮助操作员过载,这样我才能显示功能
- 我需要帮助来反转函数的功能
- 功能错误中的表达语法帮助!C/C
- 我希望在字符串功能上提供一些帮助
- 任何人都可以帮助我使这个功能更有效
- 需要帮助了解C 中的组成和类功能
- 需要帮助了解此功能的作用
- 需要帮助进入C 的功能
- SFML 帮助(使用 <Windows.h> 中的睡眠功能)
- 需要帮助理解传递论点的功能
- 帮助使用扩张功能OpenCV
- 与操作员'<<'不匹配 有人可以帮助解决无效功能错误吗?[C++]
- 需要帮助从不同的功能输出内容(C++)
- 适用于Windows XP的版本帮助程序功能
- 帮助删除用户帐户的功能
- 需要帮助搜索功能为我的电影数据库c++
- 链表需要帮助无法打印我的数据.想要添加功能.在 C - C++ 中
- 在C++链接列表中帮助.show记录功能启动无限循环
- 需要帮助调试简单的更新二进制文件的功能