c、c++中沒有提供 直接獲取陣列長度的函式,對於存放字串的字元陣列提供了乙個strlen函式獲取長度,那麼對於其他型別的陣列如何獲取他們的長度呢?其中一種方法是使 用sizeof(array) / sizeof(array[0]), 在c語言中習慣上在 使用時都把它定義成乙個巨集,比如#define get_array_len(array,len) 。而在c++中則可以使用模板 技術定義乙個函式,比如:
template
int getarraylen(t& array)
return (sizeof(array) / sizeof(array[0]));
這樣對於不同型別的數 組都可以使用這個巨集或者這個函式來獲取陣列的長度了。以下是兩個demo程式,乙個c語言的,乙個c++的:
p.s:若陣列為儲存 字串的字元陣列,則所求得的長度還需要減一,即對於巨集定義: #define get_array_len(array,len) ,對於函式定義:
template
int getarraylen(t& array)
return (sizeof(array) / sizeof(array[0]) - 1);
原因為儲存字串的字 符陣列末尾有乙個'/0'字元,需要去掉它。
【c語言】
#include
#include
#define get_array_len(array,len)
//定義乙個帶引數的 巨集,將陣列長度儲存在變數len中
int main()
char a = ;
int len;
get_array_len(a,len)
//呼叫預定義的巨集,取得陣列a的長度,並將其儲存在變數len中
printf("%d/n",len);
system("pause");
return 0;
【c++】
#include
using namespace std;
template
int getarraylen(t& array)
;cout << getarraylen(a) << endl;
return 0; }
另: 在c++的函式裡面,如果把乙個陣列作為引數傳進去,那麼這個陣列就會退化為乙個指標,因而就不知道這個陣列的長度(這裡的陣列指的是靜態的而不是new出來的).
C C 中如何獲取陣列的長度?
c c 中沒有提供 直接獲取陣列長度的函式,對於存放字串的字元陣列提供了乙個strlen函式獲取長度,那麼對於其他型別的陣列如何獲取他們的長度呢?其中一種方法是使 用sizeof array sizeof array 0 在c語言中習慣上在 使用時都把它定義成乙個巨集,比如 define get a...
C C 中如何獲取陣列的長度
c c 中如何獲取陣列的長度?收藏 c c 中沒有提供 直接獲取陣列長度的函式,對於存放字串的字元陣列提供了乙個strlen函式獲取長度,那麼對於其他型別的陣列如何獲取他們的長度呢?其中一種方法是使 用sizeof array sizeof array 0 在c語言中習慣上在 使用時都把它定義成乙個...
C C 中如何獲取陣列的長度?
c c 中沒有提供 直接獲取陣列長度的函式,對於存放字串的字元陣列提供了乙個strlen函式獲取長度,那麼對於其他型別的陣列如何獲取他們的長度呢?其中一種方法是使 用sizeof array sizeof array 0 在c語言中習慣上在 使用時都把它定義成乙個巨集,比如 define get a...