【发布时间】:2018-07-11 14:18:06
【问题描述】:
我用 C++ 编写了一个函数,该函数应该计算数组的元素数。函数接收数组作为其参数。所以我尝试了以下方法:
int countArray(int a[])
{
int size = 0;
while(a[size] != NULL)
{
size++;
}
cout<<"number of array elements are : "<<size<<endl;
}
此功能有效,但并不完美。当我将一个数组传递给这个函数时,它的元素数量与它的大小 int one[3] = {1,2,3} 或一个未调整大小的数组的元素数量相同,它将返回一个包含更多元素的结果。例如,对于前面的数组one[3],它将显示数组元素的数量为 4。
但在其他情况下它工作正常。例如,如果我传递一个元素少于其大小的数组int two[4] = {1,2,3},它将起作用。
我应该在这个例子中使用数组而不是 vector 或 struct ,所以我应该怎么做或者函数不能使用这种数组作为它的参数的原因是什么.
【问题讨论】:
-
你找不到那个尺寸。您需要将其作为参数传递,使用模板传递大小或使用适当的 c++ 容器,如
std::vector。在现代 C++ 中处理容器的惯用方式是传递范围(迭代器对)。 -
a[size] != NULL是否不检查数组中该索引处是否有元素 -
为了理智,将
NULL替换为nullptr。如果它没有编译,那么你做的不正确。 -
@AliDK 然后使用
std::vector。可移植 C++ 中也不允许使用可变长度数组。