题目:给定一个数组名字,如何根据数组名求数组的长度?
本题来自于一个同学笔试题,笔试中是实现一个冒泡排序,但是排序的参数只有一个数组名,没有数组中元素的个数;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]));}
本文介绍在C++中如何根据数组名获取数组长度的方法,包括直接使用sizeof运算符、利用模板技术以及C语言中的宏定义。这些技巧对于实现依赖于数组长度的算法(如排序)非常有用。
1640

被折叠的 条评论
为什么被折叠?



