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:若陣列為儲存字串的字元陣列(char str2=;),則所求得的長度還需要減一,即對於巨集定義: #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;
}測試**:
#include#includeusing
namespace
std;
template
int getarraylen(t&array)
intmain()
;//逐個字元賦給陣列中元素
char str2=;//
字串賦給陣列
int str1=;//
整型陣列
string str3=;//
字串陣列
string str4="
2324242
";//
字串
coutcout
cout
這個結果不對 基礎上-1
cout<"
"return0;
}
另: 在c++的函式裡面,如果把乙個陣列作為引數傳進去,那麼這個陣列就會退化為乙個指標,因而就不知道這個陣列的長度(這裡的陣列指的是靜態的而不是new出來的).
C C 陣列長度的獲取
在c 裡,字串長度可以用strlen 函式獲取,但是c 不支援陣列的長度直接獲取,所以我們要用陣列的大小來計算出它的長度 主要是根據程式執行時給定義的變數分配記憶體大小是固定的,我們用sizeof 獲取變數大小,比如 int型陣列就用陣列大小除以單個int變數的大小,這樣就能得到陣列的長度。c 中我...
C C 中如何獲取陣列的長度?
c c 中沒有提供 直接獲取陣列長度的函式,對於存放字串的字元陣列提供了乙個strlen函式獲取長度,那麼對於其他型別的陣列如何獲取他們的長度呢?其中一種方法是使 用sizeof array sizeof array 0 在c語言中習慣上在 使用時都把它定義成乙個巨集,比如 define get a...
C C 中如何獲取陣列的長度?
c c 中沒有提供 直接獲取陣列長度的函式,對於存放字串的字元陣列提供了乙個strlen函式獲取長度,那麼對於其他型別的陣列如何獲取他們的長度呢?其中一種方法是使 用sizeof array sizeof array 0 在c語言中習慣上在 使用時都把它定義成乙個巨集,比如 define get a...