[英]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而不是int:
似乎您正在正確調用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
(假)。 如果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));
這樣可以確保,如果您或其他任何人以后再看代碼,他們將不會認為該函數使用了錯誤的數據類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.