1. 程式人生 > >c++ 獲取陣列長度

c++ 獲取陣列長度

1、對於陣列或者傳遞的陣列引數,可以直接使用如下的巨集或者類似的函式來獲取。
#define getArrayLen(array,len) {len = sizeof(array)/sizeof(array[0]);}

2、對於指向陣列的指標,可以通過指標來獲取陣列大小。

需要先了解下陣列申請時的結構,如下

 申請時或在所有元素前多出一個單元存放陣列的大小。所以只要找到那個單元就能知道陣列大小。

首先讓指標指向陣列的第一個元素位置。然後指標減1,再轉換為int*直接讀取就是陣列大小了。C++中delete[] ptr 的 工作原理就用到了這個。
參考:https://blog.csdn.net/hazir/article/details/21413833

3、就是全程 自己維護一個數組大小的變數。