從C 中的指標取得陣列的大小
在C 中使用陣列時,一個常見任務是決定陣列的大小或數量數組中的元素。但是,透過指標存取數組時,這可能會很棘手。
從指標確定數組大小的問題
考慮以下函數頭:
int largest(int *list, int highest_index);
此函數旨在傳回整數數組中的最大整數。當嘗試使用指標確定“列表”數組中的元素數量時,就會出現問題。
不正確的方法
已嘗試的一些不正確的方法包括:
int i = sizeof list/sizeof(int); //returns incorrect value int i = list.size(); // does not compile
這些方法要么返回不正確的值,要么無法編譯,因為它們假設數組本質上是已知的指標。
正確方法:將陣列大小作為參數傳遞
正確的方法是將陣列大小作為附加參數傳遞給函數。這允許函數確定數組中的元素數量。
例如:
static const size_t ArraySize = 5; int array[ArraySize]; func(array, ArraySize);
在此範例中,函數 'func' 將陣列指標和陣列大小設為參數。
基本原理
C 允許陣列衰減為指標當作為函數參數傳遞時。但是,指標本身不包含有關數組大小的資訊。透過將數組大小作為參數傳遞,該函數能夠正確確定數組中的元素數量。
結論
透過指標處理數組時,必須考慮的是,指標不具有有關數組大小的固有資訊。解決方案是將數組大小作為附加參數傳遞給需要此資訊的函數。
以上是使用指標時如何取得 C 中陣列的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!