题目:给定一个数组名字,如何根据数组名求数组的长度?
本题来自于一个同学笔试题,笔试中是实现一个冒泡排序,但是排序的参数只有一个数组名,没有数组中元素的个数;void bubbleSort(int a[]);
思路:要先实现这个冒泡排序,首先要获取这个数组中数组元素的个数。然后对数组排序,下面说一下如何根据数组名获取一个数组长度。
首先我们如果在局部作用域中定义一个数组的话,获取数组中元素个数是很方便的:
int main(int argc, char * argv[])
{
int a[11];
for (int i = 0; i < 10; ++i)
{
a[i] = i;
}
int len = 0;
len = (sizeof(array) / sizeof(array[0]));
cout << len << endl;
return 0;
}
但在C++中可以使用模板技术可以实现:
template <class T>
int getArrayLen(T& array)
{
return (sizeof(array) / sizeof(array[0]));
}
int main(int argc, char * argv[])
{
int a[11];
for (int i = 0; i < 10; ++i)
{
a[i] = i;
}
int len = 0;
cout << getArrayLen(a) << endl;
return 0;
}
#define getSize(a, len){len = (sizeof(a) / sizeof(a[0]));}