C 獲取陣列長度

2021-09-22 09:20:37 字數 1335 閱讀 3899

c/c++中如何獲取陣列的長度?

如何獲取陣列的長度

2010-12-15 20:49

c/c++中如何獲取陣列的長度? 收藏

c、c++中沒有提供 直接獲取陣列長度的函式,對於存放字串的字元陣列提供了乙個strlen函式獲取長度,那麼對於其他型別的陣列如何獲取他們的長度呢?其中一種方法是使 用sizeof(array) / sizeof(array[0]), 在c語言中習慣上在 使用時都把它定義成乙個巨集,比如#define get_array_len(array,len) 。而在c++中則可以使用模板 技術定義乙個函式,比如:

template

int getarraylen(t& array)

這樣對於不同型別的數 組都可以使用這個巨集或者這個函式來獲取陣列的長度了。以下是兩個demo程式,乙個c語言的,乙個c++的:

p.s:若陣列為儲存 字串的字元陣列,則所求得的長度還需要減一,即對於巨集定義: #define get_array_len(array,len) ,對於函式定義:

template

int getarraylen(t& array)

原因為儲存字串的字 符陣列末尾有乙個'\0'字元,需要去掉它。

【c語言】

#include

#include

#define get_array_len(array,len)

//定義乙個帶引數的 巨集,將陣列長度儲存在變數len中

int main()

;

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)

int main()

;

cout << getarraylen(a) << endl;

return 0;

}另: 在c++的函式裡面,如果把乙個陣列作為引數傳進去,那麼這個陣列就會退化為乙個指標,因而就不知道這個陣列的長度(這裡的陣列指的是靜態的而不是new出來的).

程式猿神奇的手,每時每刻,這雙手都在改變著世界的互動方式!

C 獲取陣列長度

一 靜態陣列。比如 int int ary 5 靜態陣列在編譯的時候就知道了陣列長度,這對編譯器來說挺好實現的。用得最多的大概就是sizeof了吧 define countof macro x sizeof x sizeof x 0 對於c 可以用模板。如果將陣列作為函式形參的話,它會退化成乙個指標...

C 獲取陣列長度

對於字串陣列,使用strlen 函式來獲取字串陣列的長度。char a1 fwegweasdasdwqew cout strlen a1 endl 例如 int arr 可以用sizeof a sizeof a 0 來獲取陣列的長度。原理 sizeof 函式可以返回陣列所佔的記憶體,而sizeof ...

C語言獲取陣列長度

1 c語言中,定義陣列後可以用sizeof命令獲得陣列的長度 可容納元素個數 例如 double a int length length sizeof a sizeof a 0 陣列佔記憶體總空間,除以單個元素佔記憶體空間大小 printf length of a d length 輸出length...