C/C++中获取数组的长度
C/C++中没有提供直接获取数组长度的函数。对于存放字符串的字符数组,可用strlen函数获取长度。
如:char a[]="hello world";int count = strlen(a);
对于其他类型的数组,可使用sizeof(array)/sizeof(array[0]),计算长度。
在C中,可在使用时把它定义成宏,
#define GET_ARRAY_LENGTH(array,len){len=(sizeof(array)/sizeof(array[0]));}
在C++中,可使用模板技术,定义这个函数,需要将数组参数作为引用类型传递,否则数组名称会退化为一个指针,这样就无法计算数组的大小sizeof(a)。
template<class T> int GetArrayLen(T& a) { return sizeof(a)/sizeof(a[0]); }
对于存放字符串的字符数组,也可以使用这种方法来计算长度,但是计算后的值需要减去1,
即sizeof(a)/sizeof(a[0])-1,因为字符串默认带有结束符号'\0'
使用示例如下:
C语言:
#include<stdio.h> #define GET_ARRAY_LENGTH(array,len){len=(sizeof(array)/sizeof(array[0]));} int main() { char a[]={'1','2','3'}; int num; GET_ARRAY_LENGTH(a,num); printf("%d\n",num); return 0; }
C++语言:
#include<iostream> template<class T> int GetArrayLen(T& a) { return sizeof(a)/sizeof(a[0]); } int main() { char a[]={'1','2','3'}; int num = GetArrayLen(a); std::cout<<num<<std::endl; return 0; }