簡體   English   中英

重用 function 參數列表中的變量

[英]Reusing variable in function parameter list

int doSomething(int n, int arr[n])

這里讓我感到困惑的是參數列表中n變量的重用。 誰能解釋為什么這是有效的以及用例是什么?

C 允許使用多種語法來傳遞數組指針,包括:

 int* arr, int arr[] or int arr[10]  

然而,所有這些都等同於第一個 - 即編譯器只看到一個 int 指針並忽略可能在數組方括號中指定的任何大小。 指定數組大小的唯一方法是,正如您所做的那樣,傳遞一個單獨的參數,指示數組的大小/長度。
在示例中,您在 arr[n] 中引用的 n 將被編譯器忽略 - 它僅作為第一個參數是大小的指示而包含在內。 相同代碼的爭議較少的形式可能只是 state 更明確:

int doSomething(int arr_len, int arr[])

關於傳遞指針及其數組大小的最佳約定或偏好是什么,請參閱此問題

顯然,這個 function 'n' 的第一個參數是整數數組中的元素數。 這個 function 的第二個參數是一個整數數組。 'n' 是該數組的容量。

所以從 aaray[0],...,array[n-1] 你可以對這些整數做一些事情並返回 '1' 是成功或在另一種情況下返回 '0' 因為 'int' 是 function 類型。

為什么這是有效的?

You call this function, from the main() function and stack frame of this function is added to the top of the main function stack frame

int main()
{
...
int array[3];
int r = doSomething(3, array);
...
return 0;
}

所以關鍵是沒有重新聲明'n'參數。 在我們的示例中添加調用 'n' 的開頭 n = 3,然后我們有數組 [n] 所以在 'doSomething()' function 中,我們可以使用 function 變量 'n' 和數組'大批'。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM