C、C++中没有提供 直接获取数组长度的函数。对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用 sizeof(array) / sizeof(array[0])
在C语言中习惯上在 使用时都把它定义成一个宏,比如
#define GET_ARRAY_LEN(array, len) { len = sizeof(array)/sizeof(array[0]);}
代码实例:
#include<cstdio> #include<iostream> using namespace std; #define GET_LEN(array, len) { len = sizeof(array)/sizeof(array[0]);} int main() { int list[] = {1,2,3,4,5,6,7,8,9,0}; int length; GET_LEN(list, length); printf("%d ", length); return 0; }
在C++中则可以使用模板 技术定义一个函数,比如:
template <class T> int getArrayLen(T&array) { return sizeof(array) / sizeof(array[0]); }
代码实例:
#include<cstdio> #include<iostream> using namespace std; template <class T> int getArrayLen(T&array) { return sizeof(array) / sizeof(array[0]); } int main() { int list[] = {1,2,3,4,6,5,7,8,9,0}; int length = getArrayLen(list); printf("%d ", length); return 0; }
这样对于不同类型的数 组都可以使用这个宏或者这个函数来获取数组的长度了。
参考链接:http://blog.csdn.net/bopzhou/article/details/6063163/