首頁 >後端開發 >C++ >如何確定作為函數指標傳遞的 C 數組的大小?

如何確定作為函數指標傳遞的 C 數組的大小?

Susan Sarandon
Susan Sarandon原創
2024-12-12 10:38:18706瀏覽

How Can I Determine the Size of a C   Array Passed as a Pointer to a Function?

從 C 中的指標決定陣列的大小

在 C 中使用陣列時,可能有必要確定它們的大小。但是,當將數組作為函數參數傳遞時,它會衰減為指針,不會留下明確的大小資訊。

不正確的方法

  • sizeof list/sizeof(int) : 此方法嘗試使用 sizeof 運算子來確定數組的大小,但它除以 int的大小而不是數組的實際大小size.
  • list.size():該方法不能使用,因為它不是int數組類型的成員函數。

確定大小正確

從指標確定數組大小的正確方法是將大小作為附加值傳遞

int largest(int *list, int highest_index)
{
  // ...
}

要使用此函數,請將陣列及其大小作為參數傳遞:

int array[] = {1, 2, 3, 4, 5};
int size = sizeof(array) / sizeof(int); // Calculate array size
int max = largest(array, size);

陣列/指標等價

C繼承數組/指標等價來自 C,它允許數組在傳遞給函數時衰減為指標。這種行為意味著指標不包含大小資訊。

記憶體佈局

理解陣列的記憶體佈局至關重要。聲明數組時,會分配連續的記憶體來儲存其元素。指向第一個元素的指標暗示了陣列的開始,但它不攜帶有關其大小的資訊。

結論

要從 C 中的指標準確地確定數組的大小,有必要將大小作為附加參數傳遞給處理數組的函數。這種方法確保該函數可以存取所需的資訊。

以上是如何確定作為函數指標傳遞的 C 數組的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn