C C 中如何獲取陣列的長度?

2021-05-24 21:30:22 字數 1181 閱讀 7026

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...