首頁 >後端開發 >C++ >使用指標時如何取得 C 中陣列的大小?

使用指標時如何取得 C 中陣列的大小?

Patricia Arquette
Patricia Arquette原創
2025-01-05 08:51:41277瀏覽

How Can I Get the Size of an Array in C   When Using Pointers?

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

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