首頁 > 後端開發 > C++ > 如何取得 C 中作為指標傳遞的陣列的大小?

如何取得 C 中作為指標傳遞的陣列的大小?

Patricia Arquette
發布: 2024-12-22 03:52:12
原創
257 人瀏覽過

How Can I Get the Size of an Array Passed as a Pointer in C  ?

從 C 中的指標取得陣列的大小

在 C 中,決定作為指標傳遞的陣列的大小可能具有挑戰性。數組表現出“數組/指標等效性”,其中數組在作為函數參數傳遞時可以衰減為指標。這就帶來了準確確定數組大小的問題。

為了解決這個問題,我們不能依賴 sizeof(),因為它會傳回指標的大小,通常是 4 或 8 位元組,而不是陣列的數量。數組中的元素。相反,我們必須明確傳遞數組的大小作為附加參數。

解:

修改函數頭以包含陣列大小的參數:

int largest(int *list, size_t size)
登入後複製

將陣列的大小與指向的指標一起傳遞函數:

static const size_t ArraySize = 5;
int array[ArraySize];
int result = largest(array, ArraySize);
登入後複製

透過明確傳遞大小,函數可以適當地決定數組中元素的數量。

替代方法:

如果我們只有一個指向數組的指標而不是原始數組變量,我們可以使用以下方法計算大小公式:

size = sizeof(pointer_variable) / sizeof(array_element_type)
登入後複製

例如,如果我們有一個指標int *ptr ,指向一個未知大小的整數數組,我們可以如下確定大小:

size = sizeof(ptr) / sizeof(int);
登入後複製

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板