【问题标题】:Calculate array sum by given array only, without passing it's length [duplicate]仅通过给定数组计算数组总和,而不传递它的长度[重复]
【发布时间】:2018-02-19 21:26:52
【问题描述】:

我需要计算数组总和,但属性只能是这个特定的数组。

bool solution(int arr[]) {
    int counter = 0;
    int len = sizeof(arr) / sizeof(arr[0]);
    std::cout << len << std::endl;
    for (int i=0; i < len; i++){
        counter += arr[i];
    }
    if (counter == 21)
        return true;

    return false;
}

它不起作用,我需要从外部传递一个数组长度。 如何在不将数组长度作为属性传递的情况下达到此目的?

【问题讨论】:

  • 你不能。数组传入函数时会衰减为指针。
  • 为什么限制不传入size?这是首选的方法。
  • 在 C++ 中,一种解决方案是使用std::vector。它知道自己的大小。
  • 在不传递长度或数量的情况下,您如何知道要求和多少个数字?请记住,我可以有一个 32 个数组,但只有 10 个插槽被填充。
  • 将数组的地址传递给bool solution(int (*arr)[42]) {。当然,如果数组计数不是42,那么就是编译时错误。

标签: c++ arrays


【解决方案1】:

如何在不将数组长度作为属性传递的情况下达到此目的?

除非你的数组包含一个标记有效数字结束的哨兵值,否则你不能这样做。

如果您可以选择使用std::vector。然后,尺寸信息随之而来。

【讨论】:

    猜你喜欢
    • 2013-07-11
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 2011-05-16
    相关资源
    最近更新 更多