從 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中文網其他相關文章!