回覆列表
-
1 # 不愛穿花衣服的女人
-
2 # 使用者3417633067606
sizeof(a)/sizeof(a[0]),這個求的是陣列總長度,也就是定義的時候給它分配的,其中a是陣列名。三樓的兄弟用迴圈遍歷來統計陣列的實際長度,但是如果陣列中有包含元素為0的成員時,就會出問題。所以,如果你想返回已經存入陣列中的元素個數時,除非你知道這批資料中肯定沒有哪個數出現,假如-100,然後你就可以用if判斷,來遍歷整個陣列,統計個數。
如果你使用的是STL中的vector,即動態陣列的話,直接呼叫它的一個方法就可以求出存入陣列中的元素個數了。
C++中陣列可分為堆區的陣列和棧區的陣列,對於兩種陣列C++都沒有函式可以直接獲取陣列的元素的個數。一、堆區的陣列堆區的陣列是自己申請的,比如用new申請空間:int* arr = new int[10];堆區的陣列不能計算出包含元素個數。二、棧區的陣列棧區的陣列是系統自動分配的,如:[cpp] view plain copy
int arr[10] = { 1,2,3,4,5,6,7,8,9,0 }; 棧區的陣列可以透過以下兩種方法得出元素的個數:(1)[cpp] view plain copyint arr[10] = { 1,2,3,4,5,6,7,8,9,0 }; auto diff = sizeof(arr)/sizeof(int); (2)這種方法需要所用編譯器支援C++11,14[cpp] view plain copyint arr[10] = { 1,2,3,4,5,6,7,8,9,0 }; int *pbeg = begin(arr); int *pend = end(arr); auto length = pend - pbeg;//陣列元素個數