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)。
复制代码
1
2
3
4
5
6
7
8
9
10#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("%dn",num); return 0; }
对于存放字符串的字符数组,也可以使用这种方法来计算长度,但是计算后的值需要减去1,
即sizeof(a)/sizeof(a[0])-1,因为字符串默认带有结束符号''
使用示例如下:
C语言:
复制代码
1
2
3
4
5
6
7
8
9
10#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("%dn",num); return 0; }
C++语言:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13#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; }
--------------------------------------------------------------------------------------
对于简单的应用,我不推荐以上方法。
简单粗暴的方法是:int length = sizeof(a)/sizeof(a[0]);
然后直接用length就行了。
最后
以上就是勤恳香水最近收集整理的关于C/C++中获取数组的长度的全部内容,更多相关C/C++中获取数组内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复