您的位置:首页 > 编程语言 > C语言/C++

C++ 中计算数组长度

2016-01-14 22:35 267 查看
C、C++中没有提供直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?

其中一种方法是使用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在使用时都把它定义成一个宏,比如

#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));}

而在C++中则可以使用模板技术定义一个函数,比如:

template <class T>
int getArrayLen(T& array)
{
return (sizeof(array) / sizeof(array[0]));
}

还有一种看起来比较高级的做法:

template<typename T,size_t N>
void print_length(T (&m)
)
{
std::cout<<"the length of array is "<<N<<std::endl;
}


使用sizeof(array)/sizeof(array[0]) 是比较直接的做法, 用总的长度除以单个元素长度就得到长度

后一种方法看起来更高级一点,应该是有编译器在实例化模板函数时隐式的使用了直接的做法,得出了数组的长度

只要知道数组名(首地址)和元素类型就可以知道数组长度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: