c、c++中沒有提供直接獲取陣列長度的函式,對於存放字串的字元陣列提供了乙個strlen函式獲取長度,那麼對於其他型別的陣列如何獲取他們的長度呢?
其中一種方法是使用sizeof(array) / sizeof(array[0]),
在c語言中習慣上在
使用時都把它定義成乙個巨集,比如#define get_array_len(array,len)
。而在c++中則可以使用模板技術定義乙個函式,比如:
template
int getarraylen(t& array)
這樣對於一些簡單的陣列可以使用這個巨集或者這個函式來獲取陣列的長度了。
以下是兩個demo程式,乙個c語言的,乙個c++的:
ps:若陣列為儲存字串的字元陣列,即以雙引號括起來的字串整體初始化的字元陣列
例如:char a="abcdefg"或者char a=
則所求得的長度為字元陣列的長度,而不是對應的字串的長度,要求字串的長度還需要減一
原因為儲存字串的字元陣列末尾有乙個'\0'字元,需要去掉它。
對於char a="abcdefg"
sizeof(a)/sizeof(a[0])=8,要求字串長度的話應該減1.
但對於char a={'a','b','c','d','e','f','g'}
sizeof(a)/sizeof(a[0])=7
【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;
}輸出為4
【c++】
#include
using namespace std;
template
int getarraylen(t& array) //使用模板定義乙個函式getarraylen,該函式將返回陣列array的長度
int main()
;cout <<getarraylen(a)<< endl;
return 0;
}輸出為3
求陣列長度
c 求陣列長度為 int arr length sizeof arr sizeof arr 0 為了方便使用,在c語言中常定義巨集來求陣列長度 define arr len array,length 使用時,直接呼叫巨集函式即可,如 int arr int len arr len arr,len 此...
c語言求陣列長度
c語言對於不同的資料型別的陣列求長度方式稍微有不同的地方 第一種使用strlen strlen 本質上是求位元組的個數,所以當有中文字元 占用位元組一般不為1 時,會產生差錯,而英文本元都是占用乙個直接,求位元組相當於求字元 include include intmain 輸出 第二種使用sizeo...
c 求陣列長度 和vector用法
int len sizeof arr size arr 0 1 vector int a 10 定義了10個整型元素的向量 尖括號中為元素型別名,它可以是任何合法的資料型別 但沒有給出初值,其值是不確定的。2 vector int a 10,1 定義了10個整型元素的向量,且給出每個元素的初值為1 ...