gpt4 book ai didi

c++ - 在C++中用作参数时查找数组元素的数量

转载 作者:行者123 更新时间:2023-11-27 22:38:25 26 4
gpt4 key购买 nike

我用 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} 的数组,它将起作用。
我应该在这个例子中使用数组而不是 vectorstruct ,所以我应该做什么或者函数不能使用这种数组作为参数的原因是什么.

最佳答案

一旦数组衰减到指针(指向其第一个元素),就无法获取其大小。

您拥有的循环可能(很可能)超出范围,您将拥有undefined behavior .

存在三种可能的解决方案:

  1. 使用 std::array相反

  2. 使用 std::vector相反

  3. 对模板使用数组大小​​推导:

    template<size_t N>
    int countArray(int (&a)[N]) { ... }

另请注意,C++ 没有“空”值的概念。符号常量 NULL 仅用于指针

关于c++ - 在C++中用作参数时查找数组元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51287883/

26 4 0
文章推荐: JQuery Lightbox 2 插件问题
文章推荐: performance - html 4 过渡中的 html 5 标签
文章推荐: html - 如何使用 HtmlAgilityPack 解析